我們有一個使用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());
感謝您的回覆;看到我上面的編輯,試圖澄清 – user26270 2010-12-14 18:25:49
如果jniwrap64.dll是64位,因爲我懷疑它是,你將無法加載到32位系統上,實際上它會像它是不在那裏。您需要獲取32位庫並將其放置在您的軟件的適當位置以查找。 – 2010-12-15 10:01:52