2010-12-14 84 views
0

我們有一個使用JNI調用dll的GWT Web應用程序。我們也建立了dll。在我的開發人員機器上運行良好,這是一臺64位Windows 7機器,運行Java 6並在Tomcat 6中運行webapps。但是,當我們在運行32位WinXP的測試機VM上運行它時,它與什麼導致jniwrap64.dll出現UnsatisfiedLinkError?

java.lang.UnsatisfiedLinkError: Cannot load native JNIWrapper library (jniwrap64.dll) 
at com.jniwrapper.Library.loadNativeCode(SourceFile:78) 
at com.jniwrapper.Library.loadNativeCode(SourceFile:103) 
at com.jniwrapper.Library.ensureNativeCode(SourceFile:113) 
at com.jniwrapper.Library.load(SourceFile:189) 

我JRE_HOME設置爲Java 6的32位版本,因爲我想構建能夠在32位機器上工作,但顯然我是錯的瞭解一些關於如何在32或64位版本的Java可以編譯Web應用程序。

是的,我們調用的dll內置於.war中,因爲它可以在我的機器上運行。

我也google了jniwrap64.dll,但沒有發現太多相關的東西。

補充說明:jniwrap64.dll不是我創建的DLL,而且我的代碼沒有明確加載這個庫。這是我的困惑的一部分,這是什麼庫,它爲什麼被加載等我假定jniwrap64.dll是某種系統庫,需要安裝。加載我們的圖書館我的代碼如下:

Library myLib = Library(path); 
myLib.load(this.getClass().getClassLoader()); 

回答

0

當您加載具有的System.loadLibrary()的DLL你加載「jniwrap64.dll」或「jniwrap32.dll」? Cna你向我們展示加載這個庫的代碼行?

+0

感謝您的回覆;看到我上面的編輯,試圖澄清 – user26270 2010-12-14 18:25:49

+0

如果jniwrap64.dll是64位,因爲我懷疑它是,你將無法加載到32位系統上,實際上它會像它是不在那裏。您需要獲取32位庫並將其放置在您的軟件的適當位置以查找。 – 2010-12-15 10:01:52