У нас есть веб-приложение 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 - это не та библиотека, которую я создал, и мой код не загружает эту библиотеку явно. Это часть моего замешательства: что это за библиотека, почему она загружается и т. Д. Я предположил, что jniwrap64.dll - это какая-то системная библиотека, которую необходимо установить. Мой код, загружающий нашу библиотеку, выглядит следующим образом:
Library myLib = Library(path);
myLib.load(this.getClass().getClassLoader());