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