您的位置:首页 > 运维架构 > Linux

linux下使用jni实现c++调用java程序(1)准备工作

2013-03-04 23:23 771 查看
c++调用java程序一般使用两种方法:
(1)JNI(java native interface)
(2)用socket通信,建立c++客户端和java服务端

准备工作:
安装java,并配置环境变量
#echo $J***A_HOME
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0
#echo $JRE_HOME
/usr/lib/jvm/java-1.6.0-openjdk-1.6.0.0/jre

注意:一定还要配置LD_LIBRARY_PATH环境变量
如果java环境变量已经设置好J***A_HOME和JRE_HOME,并且在编译时添加了这些库文件,编译应该会通过。
但执行时出现以下错误:
#./main
./main: error while loading shared libraries: libjvm.so: cannot open shared object file: No such file or directory
这是由于没有设置好LD_LIBRARY_PATH的缘故。
可以在/etc/profile文件环境变量中加入一行:
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$JRE_HOME/lib/i386:$JRE_HOME/lib/i386/client
#source /etc/profile
之后error while loading shared libraries: libjvm.so的错误就会解决。

使用第一种方法,要用的编译命令:
g++ -o main main.cpp test_jni.cpp -I${J***A_HOME}/include -I${J***A_HOME}/include/linux -L${JRE_HOME}/lib/i386/client -ljvm

要用到的文件和库有:
jni.h
所在目录:${J***A_HOME}/include
jni_md.h
所在目录:${J***A_HOME}/include/linux
libjvm.so
所在目录:${JRE_HOME}/lib/i386/client

<准备工作结束!>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: