Приложение C++ с JNI выдает ошибку jvm.dll not found. переустановка приложения может исправить

Я написал простое приложение на C++ в VC6, которое использует jni для вызова метода в java. Для этого я включил jni.h и другие папки lib в каталоги проекта.

код компилируется, но когда я запускаю приложение, оно не говорит: «jvm.dll не найден. Переустановка приложения исправит это». Но jvm.dll присутствует на моем компьютере.

Если я установлю рабочий каталог приложения в том месте, где находится jvm.dll, то он работает как шарм. Я не могу установить рабочий каталог приложения в каталог jvm.dll, так как это приложение в будущем станет dll.

Я также пытался обновить переменную PATH в системных переменных до местоположения jvm.dll, но ничего не работает.

Я подозреваю, что jvm.lib загружает jvm.dll из определенного каталога, который не указан в моем приложении.

Пожалуйста, предложите мне, что происходит не так.

Заранее спасибо.

С уважением Рагхавендра


person user1821083    schedule 13.11.2012    source источник


Ответы (2)


он не говорит, что «jvm.dll не найден. Переустановка приложения исправит это».

Очевидно, это ваше собственное сообщение об ошибке или сообщение об ошибке Windows: не Java, и оно неверно. Переустановка приложения никак не может повлиять на возможность обнаружения jvm.dll.

Вам нужно убедиться, что jvm.dll находится в вашем PATH.

person user207421    schedule 14.11.2012
comment
@user1821083 user1821083 Тогда вы сделали это неправильно. PATH должен содержать каталог, содержащий файл jvm.dll. - person user207421; 14.11.2012
comment
@ user1821083 Убедитесь, что вы добавили путь к jvm.dll, а не к jvm.lib. Я сделал ту же ошибку только что. Я могу подтвердить, что этот ответ позволяет программе работать без ошибок. Если вам нужна дополнительная помощь, я был бы рад помочь, но давайте начнем с того, что вы опубликуете результат следующей команды в оболочке cmd: echo %PATH%. EJP- Просто к вашему сведению, это сообщение об ошибке создается Windows, а не пользователем. - person StockB; 08.01.2013
comment
@StockB В этом случае это все еще неверно. Переустанавливать нужно не приложение, а Java, хотя с точки зрения Windows это одно и то же. Однако, поскольку Java действительно установлена, проблема заключается в другом. Не очень хорошее сообщение об ошибке, откуда бы оно ни пришло. - person user207421; 08.01.2013
comment
В моем случае Java не нужно было переустанавливать, и переустановка Java не привела к правильному добавлению каталога jvm.dll в переменную среды PATH. Пришлось вручную добавлять. - person StockB; 08.01.2013

Я получил ту же ошибку, хотя мой PATH настроен так, как описывает StockB. Копирование и вставка DLL в мой рабочий каталог устранило проблему. В моем случае это был ../x64/Debug.

person voluntier    schedule 06.02.2020