2014-02-28 86 views
1

我有點困惑這個錯誤。我是新來的Java和錯誤似乎很自我解釋,但我檢查了我的路徑(甚至定義我自己的),它仍然無法找到這個庫。有什麼我做錯了嗎?見目錄的截圖及以下錯誤截圖:UnsatisfiedLinkError,但圖書館在路徑

compiler error directory

UPDATE

new error

更新2

如果我創建一個新的NetBeans項目能正常工作。相同的代碼和一切。如果我創建新的IntelliJ項目,我會在上面得到這個錯誤。我必須失去了一些東西在的IntelliJ

更新3

找到了解決辦法。在IntelliJ中添加依賴關係有點不同。感謝所有的幫助。

http://www.jetbrains.com/idea/webhelp/configuring-module-dependencies-and-libraries.html

+0

除非有很好的理由,否則您可能需要使用IDE來運行程序。如果你正在使用intelliJ,你爲什麼要從終端上運行它們? – sushain97

+0

@ sushain97我不是,我只是拍攝了IDE中的終端輸出。 – Will

+0

請提供有關所涉圖書館的更多信息。它可以幫助。 –

回答

1

Obidisc4j是一個.jar文件。你只是沒有在資源管理器中看到它的擴展。 System.loadLibrary不加載常規jar文件。它們由JVM的classLoader自動加載。

+0

啊我看到了,所以這個錯誤來自於試圖加載相關的DLL。 – Will

+1

沒錯。根據此文件:http://www.sebeto.com/intranet/ftpscambio/RFID_FEIG/SDK/Sy%20Software%20Development%20Support/ID%20OBIDISC4J%20-%20Documentation/H31101-16e-ID-B.pdf,第16頁,你應該有陪同dll左右的文件。檢查您是否正確安裝了它們。 –

+1

這是有趣的部分。我將所有庫列在與obidisc4j.dll相同的目錄中。不知道還有什麼依賴。 – Will

1

您使用的是本機庫。如果該庫位於類路徑中,則無關緊要。有4種方法可以使Java運行時在運行時加載共享庫:

  1. 調用System.load以從明確指定的絕對路徑加載.so。
  2. 將共享庫複製到已在java.library.path中列出的路徑之一
  3. 修改LD_LIBRARY_PATH環境變量以包含共享庫所在的目錄。
  4. 使用-D選項在命令行中指定java.library.path。
1

好像你的應用程序試圖找出obidisc4j.dll(適用於Windows)或obidisc4j.so(對於Linux)。該文件必須存在於PATH中(但不包括類路徑)。如果您不確定搜索到的Java應用程序的PATH是什麼,那麼可以在發生異常之前編寫以下語句來查找PATH。

System.out.println(System.getProperty("java.library.path"));

這會告訴你在哪裏你的DLL或SO文件應該被放置的路徑。您只需要將文件放置在其中一個N路徑中。