繁体   English   中英

JNI-找不到本机库

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM