我正在使用javafx v8.0.40开发桌面应用程序。我用inno 5创建了一个exe文件。当我在我的计算机上运行exe文件时,它安装并运行没有任何问题。另一方面,当我尝试在其他计算机上安装并运行它时,在安装结束时会弹出窗口对话框:“错误调用方法”,我单击“确定”。另一个窗口弹出“无法启动jvm”。我搜索了整个互联网,但我找不到这个话题。我希望我能解决这个问题。先感谢您。
我遇到了同样的问题;以下工作对我有帮助,让我理解那些被抨击的“错误调用方法”。和“无法启动JVM”对话框:
.jar
文件
它与您的项目具有相同的名称,它位于AppData\Local\{ApplicationTitle}\app
下的应用程序安装目录中(快捷方式:键入%appdata%into explorer);如果您的项目名为HelloWorld,那么您将找到HelloWorld.jar
cd
使用命令提示符到同一目录).jar
输入java -jar "HelloWorld.jar"
并按Enter键Tadah!看看你的隐藏异常(存在“错误调用方法。”所以模糊地试图与你沟通)。 *
如果你的问题类似于mine,它源于项目out
文件夹和安装目录之间的文件结构差异,这就是为什么程序在编辑器中编译得很好并且构建得很好 - 在构建之前没有问题,文件结构有点不同。
*如果在通过命令行运行它时没有得到任何结果,请查找在initialize()
方法期间可能发生的任何错误;那就是你的问题所在。您可以通过使用a similar problem, here中显示的弹出异常对话框在运行时公开任何异常。
即使这个问题有点老 - 今天我遇到了完全相同的问题,找不到任何解决方案来搜索那些错误信息。
问题几乎完全相同:使用java 8构建JavaFX应用程序(在dev pc上正常运行)并使用Inno 5打包到本机安装程序(exe)。应用程序在我们的某些机器上运行良好 - 在其他机器上它运行正常但是错误的那些错误消息:
在应用程序启动时,fxml加载程序加载第一个视图控制器并调用其“初始化”方法。如果 - 在initialize内 - 抛出一个未经抛出的异常,应用程序崩溃并显示这两个窗口错误消息。
希望这会帮助一些喜欢我的人也在努力解决这个问题。
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();
}
}
}
我无法解决问题,但我找到了解决问题的方法。我使用记事本创建批处理文件来启动应用程序。首先,我使用cd
访问.jar
文件的目录,然后使用java -jar
启动应用程序。它应该看起来像这样:
cd C:\[wherever your project folder is located]\[name of project]\dist
java -jar [name of project].jar
将其保存为桌面上的.bat
文件,启动批处理文件,程序将启动!
我刚刚遇到这个问题,而@Brad Turek的回答指出了我正确的方向。除了不是我的代码抛出异常。
用于启动我的应用程序的.exe包装器的.cfg文件(在/<app_name>/app/<app_name>.cfg
上)错误地指向了/lib
目录中不存在的库(jar文件)。哪个(我总结)导致类加载器抛出并终止启动。
纠正.cfg文件后一切正常。