我有一个程序,希望任何用户都能轻松安装,我认为创建本机安装程序是正确的方法。我使用了 Netbeans 8.0 的功能(项目属性 > 启用本机打包和打包为)。我能够创建一个可用的本机安装程序。安装后,我有以下文件树:
+-- Project
\+-- app
\+--lib (containing all the jars used by the project)
\---Project.jar
\---package.cfg
\+--runtime
\+--jre (contains the current jre)
\---Project.exe
从 Project.jar 执行程序可以正常工作。但是,当我尝试启动 Project.exe 时,我在弹出窗口中收到以下错误消息:没有详细信息任何:
Failed due to exception from main class
为了确定问题的根源,我使用了基本的标准输出,并通过 Windows 命令提示符将它们重定向到文件中。直到第一次调用外部库时我才得到输出。所以看来库链接未完成。不过,这是我的内容package.cfg
file:
app.mainjar=Project.jar
app.mainclass=project/Main
app.classpath=lib/firstlibrary.jar lib/secondlibrary.jar
指定了类路径,但似乎无法识别。我尝试反转斜杠(\)并更改空格,
or ;
无济于事。
有一种简单的方法可以重现该错误(Netbeans 8.0 和 JDK 1.8u11):
- 在 Netbeans 中创建一个新的 Java 项目
- 链接任何外部库 (.jar):右键单击“库”>“添加 jar/文件夹”
- 在 main 方法中,实例化引用该库的对象。
- 右键单击项目名称 > 属性 > 部署 > 在项目菜单中启用本机打包操作
- 右键单击您的项目 > 打包为 > EXE 安装程序
- 构建后,转到创建安装程序的目录,然后启动安装程序。
- 安装结束后,进入安装目录,启动.exe。应该会发生该错误。
知道如何解决这个问题吗?
我刚刚在使用本机打包的 JavaFX 应用程序时遇到了类似的问题,其中出现“由于主类异常而失败”错误。我的 package.cfg 看起来和你的一样。
我所做的诊断只是从命令行手动运行 jar 文件(例如 Project.jar)并查看堆栈跟踪是什么,例如如果您的主类位于 org.project.Project 中
java -cp Project.jar org.project.Project
对我来说,我用来加载打包在 jar 中的各种文件(例如 JavaFX 的 FXML 文件)的 URL 导致了问题 - 我使用的是相对 URL(例如“./blah.ext”或“../ foo.txt”等),但是一旦我根据文件在 jar 中的布局将 URL 更改为绝对 URL,它就可以正常工作(例如“/org/project/blah.ext”和“/org/foo.txt”)。 TXT”)。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)