經過一番研究,有人說我可以在我的項目運行配置添加以下VM參數。在運行時,JVM將搜索這些目錄以查找DDL。爲什麼我的Java項目可以在Eclipse中成功調用我的DLL,當我把它們放在JAVA_HOME jre6 bin但是在使用java.library.path時失敗了?
-Djava.library.path="${workspace_loc}/GunCalibration/myLib/DLLs;${env_var:PATH}"
GunCalibration是我的工作空間我的Java項目文件夾。 DLLs文件夾包含我的JNI規範定義的所有我的DLL。
其結果是,我得到這個錯誤:
Exception in thread "main" java.lang.UnsatisfiedLinkError: D:\Software x64\eclipse3.7\Kai\workspace_RealW\GunCalibration\myLib\DLLs\sixense.dll: Can't find dependent libraries
但是,如果我一些具體的dll文件複製到JAVA_HOME \ JRE6 \ BIN,我的代碼工作正常。 (我將這個路徑添加到我的系統環境路徑中。)
任何人都可以解釋爲什麼使用java.library.path的第一種方法不起作用嗎?我怎麼知道哪個ddl需要放在JAVA_HOME \ jre6 \ bin?
謝謝了很多〜
任何機會都有一些32/64位問題? – nitind
@technomage我嘗試添加我的路徑** D:\ Software x64 \ eclipse3.7 \ Kai \ workspace_RealW \ GunCalibration \ myLib \ DLLs **其中我的DLL存儲到PATH環境變量,但它仍然顯示相同的錯誤。所以這些DLL只能在JAVA_HOME \ jre6 \ bin中找到?再次感謝。 – enix0907
使用依賴關係walker(http://dependencywalker.com)來確定您需要的DLL的完整列表,然後確保PATH中包含* all *的路徑。 – technomage