запуск .jar на основе JNI на JVM - PullRequest
       8

запуск .jar на основе JNI на JVM

0 голосов
/ 11 октября 2011

У меня есть Java-программа, которую я написал, которая использует некоторые нативные методы через JNI.мой код Java в основном реализует графический интерфейс для вызова нативных методов из моего .dll.кажется, что все работает нормально, когда я запускаю код из моей IDE (netbeans), но когда я пытаюсь запустить файл .jar, кажется, что он не может получить доступ к методам .dll.

Я скомпилировал Java-программу с 32-битной библиотекой по соображениям совместимости (хотя я использую 64-битную версию windows7).я попытался запустить .jar с 32-битной платформой Java, но графический интерфейс пользователя даже не отображался, как обычно, используя 64-битную версию.я также просто использую команду «system.loadlibrary», поэтому путь к DLL должен быть относительным.

ошибка, которую я получаю: «не удается загрузить 32-разрядную библиотеку IA на 64-разрядную версию AMD»Платформа ... бла-бла ".когда я запускаю 32-битную версию java, появляется сообщение «невозможно получить доступ к jarfile ...».есть ли способ обойти это?тот факт, что программа запускается из моего представления, заставляет меня думать, что должен быть способ к этому.в идеале я бы хотел, чтобы моя программа работала на 32-битных машинах, поэтому я не хочу делать программу 64-битной.

также, компилятор выдает предупреждение "путь начальной загрузки не установлен вместес источником 1.6 ", но я не уверен, что это как-то связано с моей проблемой.

Ответы [ 2 ]

0 голосов
/ 11 октября 2011

Системное свойство java.library.path определяет пути, которые Java просматривает при загрузке библиотек с System.loadLibrary(). В Windows по умолчанию это будет текущий каталог (то есть каталог, из которого было запущено приложение), а также каталог JRE bin и каталог system32 Windows.

Вы могли бы попытаться поставить аргументы -Djava.library.path=<path to your DLL file> при запуске JVM и посмотреть, имеет ли это значение.

Вы также можете принудительно загрузить файл библиотеки, используя абсолютный путь, используя System.load().

0 голосов
/ 11 октября 2011

Я пытался скопировать .dll в каталог windows / system32

номер

каталог java / jdk1.7.0 / bin

Должно было сработать, но не в том месте.

и в тот же каталог, что и .jar

номер

Лучшее место для библиотек JNI - это текущий каталог при запуске файла JAR.

но ни один из них не решил проблему.

Какая это проблема? Вы еще не предоставили сообщение об ошибке.

...