Что вызывает ошибку UnsatisfiedLinkError для jniwrap64.dll?

У нас есть веб-приложение 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());

person user26270    schedule 14.12.2010    source источник


Ответы (1)


Когда вы загружаете dll с помощью System.loadLibrary (), вы загружаете «jniwrap64.dll» или «jniwrap32.dll»? Cna вы нам покажете строчку кода, которая загружает эту библиотеку?

person Peter Lawrey    schedule 14.12.2010
comment
Спасибо за ваш ответ; см. мои правки выше, чтобы прояснить - person user26270; 14.12.2010
comment
Если jniwrap64.dll 64-битный, как я подозреваю, вы не сможете загрузить его в 32-битной системе, на самом деле он будет действовать так, как если бы его там не было. Вам необходимо получить 32-битную библиотеку и поместить ее в подходящее место, чтобы ваше программное обеспечение могло найти. - person Peter Lawrey; 15.12.2010