【发布时间】:2014-08-14 15:13:56
【问题描述】:
我有一个程序,我希望任何用户都可以轻松安装,我认为创建一个本地安装程序是可行的方法。我使用了 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 时,我在弹出窗口中收到以下错误消息,其中 no details 无论如何:
Failed due to exception from main class
为了确定问题的根源,我使用了基本的标准输出并将它们重定向到一个文件中,这要归功于 Windows 命令提示符。在第一次调用外部库之前,我得到了输出。所以看来库链接没有完成。但是,这是我的package.cfg 文件的内容:
app.mainjar=Project.jar
app.mainclass=project/Main
app.classpath=lib/firstlibrary.jar lib/secondlibrary.jar
类路径已指定,但似乎无法识别。我尝试反转斜杠 (\) 并更改 , 或 ; 的空格,但无济于事。
有一种简单的方法可以重现该错误(Netbeans 8.0 和 JDK 1.8u11):
- 在 Netbeans 中创建一个新的 Java 项目
- 链接任何外部库 (.jar):右键单击库 > 添加 jar/文件夹
- 在 main 方法中,实例化一个引用该库的对象。
- 右键单击项目名称 > 属性 > 部署 > 在项目菜单中启用本机打包操作
- 右键单击您的项目>打包为> EXE安装程序
- 构建后,转到已创建安装程序的目录,然后启动安装程序。
- 安装结束后,进入安装目录,启动.exe。应该会发生错误。
知道如何解决这个问题吗?
【问题讨论】:
-
能否提供库链接未完成的完整输出?
-
输出对应于对 System.out.println() 的调用。由于没有关于错误消息的详细信息,我不得不以某种方式进行调试。显然,当您启动 exe 时,它不会在任何地方打印消息。因此,我使用
>运算符将标准输出重定向到一个文件中,并得到打印消息,直到实例化使用外部库的对象。 -
谁能确认这个错误发生在他们的机器上?
-
嗨@Koln,您能否解释一下您是如何做到这一点的“为了确定问题的根源,我使用了基本的标准输出并将它们重定向到一个文件中,这要归功于 Windows 命令提示符”。我在命令行中看不到任何内容,并且想跟踪类似的问题
-
@ZiglioNZ 前面的评论里都有解释。我添加了很多
System.out.println(),我知道错误很有可能发生,通过终端启动我的exe并重定向输出。类似file.exe > mystacktrace.txt
标签: java netbeans installation exe