簡體   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