2012-07-10 40 views
2

我在連接java中的jnilib時遇到了一些問題。我收到 Exception in thread "main" java.lang.UnsatisfiedLinkError: no ***.jnlib in java.library.path。 通過我的研究,我發現這可能是由java不知道文件是什麼造成的。所以,我告訴它,它在Mac文件夾中。我還將該文件添加到項目中的每個其他文件夾。這一切都沒有幫助。該項目是跨平臺,所以我試圖在Windows上的DLL加載就好了,當我告訴Java看在Windows文件夾。我不明白爲什麼這可以在Windows而不是在Mac上工作。任何想法或想法都會受到歡迎。JNI UnsatisfiedLinkError .jnilib不喜歡

異常輸出是:

Exception in thread "main" java.lang.UnsatisfiedLinkError: no libhidapi-jni-64.jnilib in java.library.path 
     at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) 
     at java.lang.Runtime.loadLibrary0(Runtime.java:823) 
     at java.lang.System.loadLibrary(System.java:1045) 
     at webstart.OmronIO.<init>(OmronIO.java:30) 
     at webstart.Omron.main(Omron.java:13) 

的的java.library.path是:/卷/ UNTITLED/javahidapi/MAC。

jinlib的路徑是:/卷/ UNTITLED/javahidapi/mac。

回答

0

在OSX上,環境變量DYLD_LIBRARY_PATH用於查找共享庫(包括.jnilib)。該變量是用來初始化java.library.path的。

如果您在嘗試System.loadLibrary()的位置輸出java.library.path的值,則會看到您嘗試加載的庫搜索的目錄列表。

編輯

又見http://create-lab-commons.googlecode.com/svn-history/r222/trunk/java/lib/HIDAPI/README.txt,這似乎適用於您正在試圖加載(hidapi)的特定庫,而你嘗試加載它(在webstart)的方式。

+0

輸出具有到.jnlp文件的路徑。我仔細檢查了我拼寫正確,並且.jnlp文件確實在返回的路徑中。 – Thinmint 2012-07-10 20:15:15

+0

如果您沒有包含實際的異常輸出,請複製/粘貼jnilib位置和java.library.path內容,則無法說明您是在簡單地忽略某些內容還是在您的問題中進行錯字輸入。還有可能是你有一個加載問題(錯誤的體系結構?),但是那些通常會顯示更具體的錯誤消息。 – technomage 2012-07-11 11:14:27

+0

異常輸出是:'在線程中的異常「主」java.lang.UnsatisfiedLinkError:否在java.library.path中的libhidapi-jni-64.jnilib \t at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1758) \t at java.lang.Runtime.loadLibrary0(Runtime.java:823) \t at java.lang.System.loadLibrary(System.java:1045) \t at webstart.OmronIO。 (OmronIO.java:30) \t at webstart.Omron.main(Omron.java:13)' java.library.path是/Volumes/UNTITLED/javahidapi/mac.jinlib的路徑是/ Volumes/UNTITLED/javahidapi/MAC。對不起,錯字。 – Thinmint 2012-07-11 14:13:03