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

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}/include
jni_md.h
所在目录:${JAVA_HOME}/include/linux
libjvm.so
所在目录:${JRE_HOME}/lib/i386/client

<准备工作结束!>