2014-01-21 36 views
1

我試圖做這個教程是爲JNIJNI教程,cant'load庫

https://netbeans.org/kb/docs/cnd/beginning-jni-linux.html

我已經在那裏所做的一切,但我有這個麻煩

Exception in thread "main" java.lang.UnsatisfiedLinkError: Can't load library: /home/usr/NetBeansProjects/JNIDemoCdl/dist/libJNIDemoCdl.so 
at java.lang.ClassLoader.loadLibrary(ClassLoader.java:1846) 
at java.lang.Runtime.load0(Runtime.java:795) 
at java.lang.System.load(System.java:1061) 
at jnidemojava.Main.<clinit>(Main.java:13) 

的Java結果:1

我有點堅持JNI一段時間,現在,我可以使用一些幫助,感謝

+0

可能聽起來很蠢,但你檢查,該庫是在準確的路徑錯誤消息打印出來? – Machtl

+0

是的,這是可怕的事情,這是事實上,我仔細檢查 – user3182920

+0

@ user3182920 64位和32位? – Samhain

回答

0

確保您具有對目錄結構和lib文件本身的遞歸讀/寫權限。

嘗試

sudo chmod ug+rwX -R /home/usr/NetBeansProjects/ 

這將增加讀/寫權限的文件和顯示目錄,並在目錄和文件已經爲用戶執行標誌執行權限。

希望這會有所幫助。

0

我從來沒有使用Mac,但使用Windows,當我開始使用jni時,我面臨同樣的問題。 隨着你的問題可能是很多東西或一個 創建的dll標誌是不正確的,請確保您使用正確的命令來創建dll。 我使用以下命令

gcc -Wall -D_JNI_IMPLEMENTATION_ -Wl,--kill-at -I"C:\Program Files\Java\jdk1.7.0\include" -I"C:\Program Files\Java\jdk1.7.0\include\win32" -shared -o Sample1.dll Sample1.cpp 

爲此,我使用了mingw編譯器。

  • 在mac上的windows dll文件這樣會的。 我使用命令 System.loadlibrary("youLibraryNameWithoutExtensionAndPath") 在這之前轉到您的項目構建路徑並展開jre並選擇本地庫,然後單擊眉毛並選擇您將dll/so文件放到哪裏並確定。 現在嘗試運行您的代碼。這將解決問題。

但如果DLL/SO文件有依賴的lib,那麼你必須把在System32文件夾中的所有DLL文件(在Windows)