Не удалось найти библиотеку: jvm.dll. Что здесь происходит?

На некоторых компьютерах, но не на всех, в которых мое приложение установлено, после того, как выглядит успешная установка, когда вы пытаетесь запустить его, он показывает эту ошибку:

enter image description here

Файл присутствует в этом каталоге, поэтому я не уверен, почему он говорит, что не удалось найти библиотеку.

За этой ошибкой следует

enter image description here

И наконец:

enter image description here

и тогда ничего не происходит. Приложение не запускается. Есть идеи, что происходит?

Некоторые люди указали на этот отчет об ошибке, который, похоже, говорит об этой проблеме: https://bugs.openjdk.java.net/browse/JDK-8191176, но я создал свое приложение с 8u162, а также 8u172 (ранний доступ, в частности, jdk-8u172-ea-bin-b03-windows-x64-18_jan_2018), и результат будет таким же. Это происходит на Windows 10 Pro 1703, а также на 1709.

Я не уверен, что еще может быть актуальным.

Ответ 1

Возможно, на вас влияет JDK-8191176: самосохраняемое приложение JavaFX с ошибкой "Не удалось найти библиотеку: jvm.dll", которая затрагивала 8u151 и была исправлена в 8u162.

Снова вернусь в Windows 10 Enterprise build 1709 с соответствующими версиями JDK и может подтвердить проблему, как сообщалось. Появилась ошибка "Не удалось найти библиотеку: jvm.dll" и последующие диалоговые окна ошибок, как описано при проверке с помощью JDK 8u151/8u152.

Возможно, вы можете проверить, что происходит, когда вы работаете с 8u162 или новее.

Ответ 2

Это неверное сообщение об ошибке, на самом деле означает, что некоторые из.dll depend. Не найдены. Одна из jvm.dll зависимостей не сама jvm.dll.

Из https://bugs.openjdk.java.net/browse/JDK-8191176:

Для тех, кто ищет решение, я извлек "msvcr100.dll" из Java и добавил его в свой источник приложения. При использовании JavaPackager при создании моего проекта JavaFX (с использованием InnoSetup) я просто добавляю эти строки в скрипт setup.iss, чтобы поместить файл рядом с application.exe:

[Files] 
Source: "YOUR_APPLICATION\app\msvcr100.dll"; 
DestDir: "{app}"; 
Flags: ignoreversion