Ошибка вызова метода, не удалось запустить jvm

Я разрабатываю настольное приложение, используя javafx v8.0.40. Я создал exe файл с inno 5. Когда я запускаю exe файл на своем компьютере, он устанавливается и запускается без каких-либо проблем. С другой стороны, когда я пытаюсь установить и запустить его на другом компьютере, в конце установки появится диалоговое окно окна: "Метод вызова ошибки", нажмите "ОК". Появилось другое окно, в котором говорилось: "Не удалось запустить jvm". Я искал весь интернет, но я не мог найти много об этой теме. Надеюсь, я получу решение этой проблемы. Заранее благодарю вас.

Ответ 1

Я столкнулся с той же проблемой; следующее работало на меня и помогло мне разобраться в том, что они взорвали "метод вызова ошибок". и "Не удалось запустить JVM":

  • Найдите файл .jar
    • Он имеет то же имя, что и ваш проект, и он находится в каталоге установки приложения под AppData\Local\{ApplicationTitle}\app (ярлык: введите% appdata% в проводник); если ваш проект был назван HelloWorld, там вы найдете HelloWorld.jar
  • Перейдите в каталог в командной строке
    • shift + Right Click любое пустое место в окне проводника и выберите "Открыть командное окно здесь" (это модный трюк, который я недавно узнал; альтернативно, вы бы cd в тот же каталог, используя командную строку)
  • Запустите .jar через командную строку
    • введите java -jar "HelloWorld.jar" и нажмите Enter

Tadah! Вот ваши скрытые исключения (существование которых "метод вызова ошибки" ) так смутно пытается связаться с вами). *

Если ваша проблема похожа на mine, это связано с различием файловой структуры между папкой проекта out и каталогом установки, и поэтому программа компилирует только отлично в редакторе и строит просто отлично - проблема не возникает до тех пор, пока она не будет построена, а структура файла немного отличается.

* Если вы не получили ничего, когда вы запускали его через командную строку, найдите любые ошибки, которые могут произойти во время этого метода initialize(); что, где ваша проблема, вероятно, есть. Вы можете выставить любые исключения во время выполнения, используя Диалог исключения всплывающих окон, как показано в аналогичной проблеме, здесь.

Ответ 2

Вероятно, это связано с тем, что в выходном банке не хватает зависимостей. Поэтому вы не хотите добавлять библиотеки в артефакт, а затем генерировать .exe должно быть хорошо.

Вот пример с Intellij, где библиотеки были перемещены вручную из "Доступных элементов" в артефакт

Пример Intellij

Ответ 3

хотя этот вопрос немного старый - сегодня я столкнулся с одной и той же проблемой и не смог найти решение, ищущее эти сообщения об ошибках, кроме этого.

Проблема в значительной степени идентична: Встроенное приложение JavaFX (отлично работает на dev pc) с использованием java 8 и упаковано в собственный установщик (exe) с помощью Inno 5. Приложение отлично работало на некоторых наших машинах - на других он не удался с точными сообщениями об ошибках:

  • "Метод вызова ошибки" и после нажатия OK
  • "Не удалось запустить jvm".

При запуске приложения загрузчик fxml загружает первый контроллер представления и вызывает его метод "initialize". Если - при инициализации - генерируется исключение из-под канделябра, приложение вылетает, и отображаются эти два сообщения об ошибках Windows.

Надеюсь, что это поможет тому, кто любит меня, тоже борется с этим.

Ответ 4

Ответ J.Dürr (ответил 8 июня в 9:58) помог решить мой метод вызова ошибки и не удалось запустить JVM-проблему. Я использовал следующий код для отслеживания проблемы, которая оказалась ошибочным путем для пути к файлу FXML:

public static void main(final String[] taArgs)
{
  try
  {
    Main.launch(taArgs);
  }
  catch (Exception e)
  {
    JOptionPane.showMessageDialog(null, e.getMessage());
    try
    {
      PrintWriter pw = new PrintWriter(new File("<somefilename.txt>"));
      e.printStackTrace(pw);
      pw.close();
    }
    catch (IOException e1)
    {
      e1.printStackTrace();
    }
  }
}