linux下使用jni实现c++调用java程序(1)准备工作
c++调用java程序一般使用两种方法:(1)JNI(java native interface)(2)用socket通信,建立c++客户端和java服务端
准备工作:安装java,并配置环境变量#echo $JAVA_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环境变量已经设置好JAVA_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${JAVA_HOME}/include -I${JAVA_HOME}/include/linux -L${JRE_HOME}/lib/i386/client -ljvm
要用到的文件和库有:jni.h所在目录:${JAVA_HOME}/includejni_md.h所在目录:${JAVA_HOME}/include/linuxlibjvm.so所在目录:${JRE_HOME}/lib/i386/client
<准备工作结束!>