在java web项目中调用c++程序简单案例
来源:互联网 发布:汽车振动检测软件 编辑:程序博客网 时间:2024/06/05 15:38
1.首先新建一个java web项目,编写一个java类
因为要使用jni来调用c++程序,因此该类中的方法名录需要用native修饰且只有方法声明,没有实现
package testnative;public class TestNative { public native static String testNative(String str);}
2.在eclipse中使用javah命令来编译头文件
在elipse中点击【Run】–>【External Tools】–>【External Tools Configurations..】
测试会弹出一个窗口然后选择【Program】右击新建,如图:
这样我们就可以在eclipse中使用doc环境进行编译,如图,并输入红框中的命令,然后回车,这样就完成了Javah编译:
3.使用VS工具,新建一个C++项目:
这样生成的dll文件是32位的,如需生成64位的,继续如下步骤:
4.在新建的C++项目中加入必要的3个头文件
4.1 JDK中两个h头文件:jni.h 和 jni_md.h两个文件的目录分别位于安装好的JDK目录下include与include/win32下
4.2 eclipse中点击【Window】–>【Show View】–>【Navigator】
4.3将这三个头文件拷贝到新建的C++项目下 and 添加到头文件夹中
4.3.1
4.3.2
5.新建一个C++源代码文件来编写我们的逻辑代码
6.编写c++代码前准备工作
打开使用javah编译好的头文件testnative_TestNative.h,将 #include<jni.h>
更改为 #include "jni.h"
并将该头文件中的方法复制到main.cpp中
7.为该c++项目生成解决方案,然后在该项目的Debug目录下找到TestNative.dll文件,复制到java web 项目中
8.eclipse中设置 指定JVM查找动态连接库的目录(java.library.path)
8.1选择项目,点击右键>Build path>Configure Build path
8.2左侧选择Java Build Path>Libraries>JRE System Library>Native library location
8.3点击edit选择library路径,我这里选择的是工作空间的相对路径(即TestNative.dll文件所在目录),也可以直接输入绝对路径
9.当然在使用native方法之前需要先将dll文件加载进来,此时我们修改TestNative类
package testnative;public class TestNative { static{ System.loadLibrary("TestNative"); } public native static String testNative(String str);}
10.测试
控制台原样返回,到此结束。。。
本文只是整理测试,非完全原创,参考链接如下:
http://blog.csdn.net/liangzhao_jay/article/details/22854623
http://blog.openlg.net/index.php/archives/723
http://jingyan.baidu.com/article/380abd0a4640171d90192c9e.html
http://blog.csdn.net/ring0hx/article/details/3242245
- 在java web项目中调用c++程序简单案例
- 在java web项目中调用c++程序简单案例
- 在java web项目中调用c++程序简单案例
- 在java web项目中调用c++的dll程序简单案例
- 在java中实现调用简单的c程序
- 在java中实现调用简单的c程序
- 在Java程序中调用C函数--打印"HelloWorld"
- 在java中调用c程序--native方法的学习
- 在Java程序中调用C函数--打印"HelloWorld"
- 在ASP程序中调用Web Service
- 在ASP程序中调用Web Service
- 在ABAP程序中调用Web Service
- Java调用c程序动态库详细案例
- 在window下,简单利用NDK编译c/c++文件,在android项目中调用。
- 在JAVA程序中调用其他程序
- 在java程序中调用matlab程序
- 在C#程序中调用浏览器
- 在C程序中调用Matlab功能
- Android常用检查判断方法
- Guice注解实现一个类型绑定多个实现.
- 升级linux内核(2.6.32->3.10.105),安装docker
- 上机第十四周实验
- 今日头条lite:你关心的才是头条【极乐小程序商店出品】
- 在java web项目中调用c++程序简单案例
- 20170522Link memo
- C++关于子类调用父类的构造方法的问题
- XMLElement,XMLDocument 用法
- 初探并发
- 4-2 多项式求值 (15分)
- 如何下载矢量二维电子地图数据
- 高性能mysql笔记(八)查询执行基础
- Android Material Design 兼容库的使用详解