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

问题描述 投票:13回答:6

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

javafx javafx-8
6个回答
12
投票

我遇到了同样的问题;以下工作对我有帮助,让我理解那些被抨击的“错误调用方法”。和“无法启动JVM”对话框:

  1. 找到你的.jar文件 它与您的项目具有相同的名称,它位于AppData\Local\{ApplicationTitle}\app下的应用程序安装目录中(快捷方式:键入%appdata%into explorer);如果您的项目名为HelloWorld,那么您将找到HelloWorld.jar
  2. 在命令提示符中导航到它的目录 shift +右键单击资源管理器窗口中的任何空白位置,然后选择“在此打开命令窗口”(这是我最近学到的一个奇特技巧; alternatively you would cd使用命令提示符到同一目录)
  3. 通过命令行运行.jar 输入java -jar "HelloWorld.jar"并按Enter键

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

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

*如果在通过命令行运行它时没有得到任何结果,请查找在initialize()方法期间可能发生的任何错误;那就是你的问题所在。您可以通过使用a similar problem, here中显示的弹出异常对话框在运行时公开任何异常。


5
投票

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

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

Intellij example


2
投票

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

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

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

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

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


1
投票

J.Dürr的回复(于2016年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
投票

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

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

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


0
投票

我刚刚遇到这个问题,而@Brad Turek的回答指出了我正确的方向。除了不是我的代码抛出异常。

用于启动我的应用程序的.exe包装器的.cfg文件(在/<app_name>/app/<app_name>.cfg上)错误地指向了/lib目录中不存在的库(jar文件)。哪个(我总结)导致类加载器抛出并终止启动。

纠正.cfg文件后一切正常。

© www.soinside.com 2019 - 2024. All rights reserved.