Java:如何从 native 安装程序创建可运行的 .exe?

标签 java netbeans installation exe

我有一个程序,我希望任何用户都能轻松安装,我认为创建 native 安装程序是可行的方法。我使用了 Netbeans 8.0 的功能(项目属性 > 启用 native 打包和打包为)。我能够创建一个有效的 native 安装程序。安装后,我有以下文件树:

+-- 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 时,我在弹出窗口中收到以下错误消息,其中没有详细信息:

由于主类异常而失败

为了确定问题的根源,我使用了基本的标准输出并将它们重定向到一个文件中,这要归功于 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 方法中,实例化一个引用该库的对象。
  • 右键单击项目名称 > 属性 > 部署 > 在项目菜单中启用 native 打包操作
  • 右键单击您的项目 > 打包为 > EXE 安装程序
  • 构建后,转到创建安装程序的目录,然后启动安装程序。
  • 安装结束时,转到安装目录,然后启动 .exe。错误应该发生。

知道如何解决这个问题吗?

最佳答案

我刚刚遇到了一个与 native 打包的 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").

关于Java:如何从 native 安装程序创建可运行的 .exe?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25311598/

相关文章:

java - 从 JFileChooser 获取带引号的路径?

java - 在android中的 ListView 的每一行添加一个按钮?

java - 如何编写一个 SQL 以便它可以在任何数据库上运行

c++ - 如何将库添加到我的 NetBeans C++ 项目?

Glassfish (v3) 应用程序部署中的 java.util.zip.ZipException

node.js - 在Webfaction上设置Node.js

java - 安卓动画: bouncing button like on mac

java - 如何将文件路径保存到sql数据库

python - rpy2 在 debian 上安装问题

php - yii2 安装 - 迁移命令不起作用