У нас есть веб-приложение GWT, которое использует JNI для вызова библиотеки DLL.Мы также строим dll.Он отлично работает на моей машине разработчика, которая является 64-битной Windows 7, работает под управлением Java 6 и запускает веб-приложения в Tomcat 6. Но когда мы запускаем ее на виртуальной машине тестера, которая работает под управлением 32-битной WinXP, она выдает ошибку
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 настроен на 32-разрядную версию Java 6, потому что я хотел, чтобы сборка работала на 32-разрядной машине, но, очевидно, я неправильно понимаю, как32- или 64-разрядные версии Java работают при компиляции веб-приложения.
И да, DLL-библиотека, которую мы вызываем, встроена в .war, поскольку она работает на моем компьютере.
Я также погуглил jniwrap64.dll, но не нашел много интересного.
Добавлено для пояснения: jniwrap64.dll - это не dll, который я создал, и мой код явно не загружает эту библиотеку.,Это часть моего замешательства, что это за библиотека, почему она загружается и т. Д. Я предположил, что jniwrap64.dll - это некая системная библиотека, которую нужно установить.Мой код, который загружает нашу библиотеку, выглядит следующим образом:
Library myLib = Library(path);
myLib.load(this.getClass().getClassLoader());