问题 调用方法时出错,无法启动jvm


我正在使用javafx v8.0.40开发桌面应用程序。我用inno 5创建了一个exe文件。当我在我的计算机上运行exe文件时,它安装并运行没有任何问题。另一方面,当我尝试在其他计算机上安装并运行它时,在安装结束时会弹出窗口对话框:“错误调用方法”,我单击“确定”。另一个窗口弹出“无法启动jvm”。我搜索了整个互联网,但我找不到这个主题。我希望我能解决这个问题。 先谢谢你。


4886
2017-10-22 15:43


起源

嗨!你的问题缺乏准确性!哪个版本的javafx,哪个版本的inno,你的代码是什么样的,等等!请看看 如何对问 部分 - jkalden
堆栈溢出有很多类似的问题: stackoverflow.com/questions/33004035/..., stackoverflow.com/questions/33212291/..., stackoverflow.com/questions/14253079/...。随便挑选。如果这两个问题都没有提供解决方案,他们应该让您知道您有什么信息来补充您的问题。 - hotzst
@tarlan,不要忘记将答案标记为已接受,如果它帮助您(或其他人)解决手头的问题。 - Brad Turek


答案:


我遇到了同样的问题;以下对我有用,并帮助我弄清楚那些爆炸的“错误调用方法”。和“无法启动JVM”对话框:

  1. 找你的 .jar 文件
    • 它与您的项目具有相同的名称,它位于应用程序的安装目录下 AppData\Local\{ApplicationTitle}\app (快捷方式:在浏览器中键入%appdata%);如果你的项目名为HelloWorld,你会发现 HelloWorld.jar
  2. 在命令提示符中导航到它的目录
    • 转移+右键点击 在资源管理器窗口中的任何空白处选择“在此打开命令窗口” (这是我最近学到的一个奇特的伎俩; 或者你会的 cd 使用命令提示符到同一目录)
  3. 跑你的 .jar 通过命令行
    • 类型 java -jar "HelloWorld.jar" 并击中 输入

Tadah! 看看你的隐藏异常(存在“错误调用方法。”所以模糊地试图与你沟通)。 *

如果你的问题类似于  它源于项目之间的文件结构差异 out 文件夹和安装目录,这就是为什么程序在编辑器中编译得很好并且构建得很好 - 在构建之前没有问题,文件结构有点不同。

*如果在通过命令行运行它时没有得到任何信息,请查找在此期间可能发生的任何错误 initialize() 方法;这就是你的问题所在。 您可以使用弹出异常对话框在运行时公开任何异常,如图所示 类似的问题,这里


9
2017-07-01 22:20





这可能是因为它缺少输出jar中的依赖项。所以你讨厌在工件中添加库,然后.exe生成应该没问题。

以下是Intellij的示例,其中库已从“可用元素”手动移动到工件

Intellij的例子


3
2018-02-03 14:03





即使这个问题有点旧 - 今天我遇到了完全相同的问题,找不到任何解决方案来搜索那些错误消息。

问题几乎完全相同: 使用java 8构建JavaFX应用程序(在dev pc上正常运行)并使用Inno 5打包到本机安装程序(exe)。 应用程序在我们的一些机器上运行正常 - 在其他机器上运行失败,与错误消息完全相同:

  • “调用方法时出错” 然后单击确定
  • “无法启动jvm”。

在应用程序启动时,fxml加载程序加载第一个视图控制器并调用其“初始化”方法。如果 - 在initialize内 - 抛出了一个非常规异常,应用程序崩溃并显示这两个窗口错误消息。

希望这会帮助一些喜欢我的人也在努力解决这个问题。


0
2018-06-08 09:58





J.Dürr的回应(16年6月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();
    }
  }
}

0
2017-10-10 21:36





我无法解决问题,但我找到了解决方法。我使用记事本创建批处理文件来启动应用程序。我先用过 cd 到达目录 .jar 文件然后使用 java -jar 启动应用程序。它应该看起来像这样:

cd C:\[wherever your project folder is located]\[name of project]\dist
java -jar [name of project].jar

把它保存为 .bat 在桌面上的文件,启动批处理文件,您的程序将启动!


0
2017-08-17 04:45