jni基础网上很多在此不提。
配置:10.9.1系统,jdk1.7.0_45;
1.mac系统自带jdk1.6,查找不到jni库文件,于是自装jdk1.7(官网下载),jdk1.6没删
2.装好后终端输入命令java -version,没问题就会显示此时版本为1.7的
3.pico .bash_profile输入如下命令:
export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
然后control+x退出保存
4.终端输入:cd /Users/zcl/Desktop/jni(注:此路径为你要编译的c++文件路径)
5.g++ -I/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/include -c JniTest.cpp des.cpp rsa.cpp spluoj.cpp(注:本人文件夹下有4个cpp文件)
可能会报找不到jni_md.h文件,到/Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/include/darwin目录下把jni_md.h文件拷贝到上级目录即是include目录下,重新运行上述命令成功后会生成4个.o文件本人的是JniTest.o des.o rsa.o spluoj.o
6.g++ -dynamiclib -o libJniTest.jnilib JniTest.o des.o rsa.o spluoj.o(注:4个.o文件)
成功后会生成libJniTest.jnilib文件
7.把libJniTest.jnilib文件复制到当前项目下,在java文件输入
static {
//使查找路径为当前项目路径
System.setProperty("java.library.path", ".");
System.loadLibrary("JNITest");
}
8.ok启动编译
本人c++文件及编译后的.o文件,.jnilib,相应的项目jni相关的java文件下载路径:
http://download.youkuaiyun.com/detail/qwezcl/6801367