2011-04-28 62 views
0

我找了一個解決方案/對於以下問題JNI建議:的Java:System.load和的System.loadLibrary拋出不合適的鏈接錯誤在Windows XP中,但不是在Windows 7

我試圖加載一個庫文件(* .lib),它由我的代碼隨時創建並放置在文件系統的臨時文件夾中。但是,當我嘗試加載相同的,在Java API中的System.loadSystem.loadlibrary,我得到不滿意的鏈接錯誤。

重要的事情在這裏會是這樣,我正在用我的命令行應用
java -jar <executable-jar-file>

我驗證:

  1. 如果庫文件加載
  2. 的classpath &路徑變量之前實際存在設置正確
  3. 在我的桌面上,我沒有看到有Windows 7的任何問題。
  4. 我在Windows XP的測試服務器中看到此問題,但它的Java版本相同。

請建議解決方案。提前致謝。

+0

什麼版本的Windows NT?最新版本是4.0sp6a,但它在11年前發佈,並且自2004年以來一直未得到支持。 – Gabe 2011-04-28 05:20:11

+0

對於混淆,它是Windows XP Professional 2002 SP2。很多probs在我的頭上,所以錯字! – 2011-04-28 06:06:59

回答

0

loadLibrary查找系統路徑/庫路徑。我不認爲TEMP包含在此。要做到這一點最好的辦法是建立一個基於該TEMP環境變量的值的完整路徑,並提供該路徑來loadLibrary

String path = System.getenv("TEMP"); 
path += File.separator + "yourlibrary.dll"; //or in the case of linux will be yourlibrary.so! 
System.loadLibrary(path); 
+0

感謝麗芙,但正如我告訴我使用的.lib文件動態生成一些安全的名稱說libtmserialxxxxxxxxx.lib其中xxxxx可以是一個隨機數。所以我不能像你所說的那樣硬編碼。而且,雖然我在運行jar文件時將命令行的temp設置爲正確的路徑,但我確實得到了Unsatisifed鏈接錯誤。任何幫助在這裏.... – 2011-04-28 11:59:57

相關問題