[英]JNI - Cannot find native library
我有一个用于C ++本机库的JNI包装器。 当我尝试在Java代码中加载库时,看到以下异常:
java.lang.UnsatisfiedLinkError: no Foo in java.library.path
我这样加载库:
System.loadLibrary("Foo");
我将java.library.path设置如下:
java.library.path = /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib
我向JVM选项中添加了-XshowSettings:properties
,并确认是否如上所述设置了java.library.path。
这是文件系统上的库.so:
$ l /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib/libFoo.so
-rwxr-xr-x 1 root wheel 448K 29 Oct 14:23 /Library/Java/JavaVirtualMachines/jdk1.7.0_45.jdk/Contents/Home/lib/libFoo.so
环境信息:
java.version = 1.7.0_40
os.arch = x86_64
os.name = Mac OS X
os.version = 10.10
那为什么不能加载库呢?
将您的.so文件放在jni / libs文件夹中。 如果您具有用于多个平台的库,则需要为每个平台创建一个文件夹并放置相应的文件。 例如,jni / libs / x86将为x86平台构建.so文件。 如果您使用的是Android Studio,则与此处略有不同。
在Mac OS X上,JDK不会在路径中搜索以.so
或.dylib
或.jnilib
以外的文件结尾的文件。 我们需要确保本机库的文件名以.dylib
或.jnilib
。
参考: https : //developer.apple.com/library/mac/documentation/Java/Conceptual/Java14Development/05-CoreJavaAPIs/CoreJavaAPIs.html
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.