当前位置: 首页 > 知识库问答 >
问题:

Java:如何从本机安装程序创建工作的.exe?

顾宣
2023-03-14

我有一个程序,我想能够很容易地安装由任何用户,我认为创建一个本机安装程序是走的路。我使用了Netbeans 8.0的功能(Project properties>Enable native packaging,Package as)。我能够创建一个工作的本地安装程序。安装后,我有以下文件树:

+-- 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时,在一个没有任何详细信息的窗口弹出窗口上会出现以下错误消息

由于主类出现异常而失败

app.mainjar=Project.jar
app.mainclass=project/Main
app.classpath=lib/firstlibrary.jar lib/secondlibrary.jar 
  • 在NetBeans中创建新的Java项目
  • 链接任何外部库(.jar):右键单击Libraries>Add jar/folder
  • 在main方法中,实例化引用该库的对象。
  • 右键单击项目名称>属性>部署>在项目菜单中启用本机打包操作
  • 右键单击项目>Package as>EXE安装程序
  • 生成后,转到创建安装程序的目录,然后启动安装程序。
  • 安装结束时,转到安装目录,并启动.exe。就会发生错误。

知道怎么解决吗?

共有1个答案

牛凌
2023-03-14

我刚刚在一个原生打包的JavaFX应用程序中遇到了类似的问题,在该应用程序中,我收到了“由于主类的异常而失败”错误。我的package.cfg看起来和你的一样。

我所做的诊断只是从命令行手动运行jar文件(例如project.jar)并查看stacktrace是什么,例如您的主类是否在org.project.project中

java -cp Project.jar org.project.Project

对我来说,我用来加载包装在jar中的各种文件(例如JavaFX的FXML文件)的URL引起了问题--我使用的是相对URL(例如“./blah.ext”或“../foo.txt”等),但一旦我根据文件在jar中的布局将URL更改为绝对的,它就可以正常工作(例如“/org/project/blah.ext”和“/org/foo.txt”)。

 类似资料:
  • 问题内容: 我有一个我希望可以被任何用户轻松安装的程序,我认为创建本地安装程序是必经之路。我使用了Netbeans 8.0的功能(“项目”属性>“启用本机打包”和“打包为”)。我能够创建一个有效的本机安装程序。安装后,我具有以下文件树: 从Project.jar执行该程序。但是,当我尝试启动Project.exe时,在 没有任何详细信息 的窗口弹出窗口中收到以下错误消息: 为了确定问题的根源,我使

  • Java运行时环境(OpenJDK 1.7 JRE) 脚本(.bat) 一个胖罐子 图标文件 一些文本文件 我不想使用系统的JRE,这就是我提供另一个JRE的原因。该脚本只使用几个参数调用JRE。图标文件为.ico格式。fat JAR是包含所有必需的Java类、本机库和资产(包括第三方库)的JAR。 我想允许最终用户安装、运行和卸载我的程序。我想在“开始”菜单中提供一个快捷方式来运行它,另一个快捷

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • Debian 安装程序由一些特定功能的元件组成,它们完成各自的安装任务。 每一元件执行任务时,会询问一些任务相关的问题。每个任务又有各自的 优先级,可以在安装程序开始时设置优先级决定哪些问题会问到。 执行默认安装时,只有必要的(高优先级)的问题会被问到。 使得安装过程可以高度自动化,几乎不需用户干预。 元件按次序字典执行;至于哪些元件会执行,这取决于您使用的安装方法, 以及您的硬件。对于没有询问的

  • 问题内容: 我正在将中型Java应用程序的构建从Ant迁移到Maven。我可以轻松迁移基本的构建内容,但是我也想从Maven构建中创建安装程序包。最简单的方法是通过Ant插件调用原始的Ant脚本,但我想也许我应该先看看Maven的支持。 我需要为不同的平台创建几个不同的安装程序: Windows 32/64位 Linux 32/64位 MacOS 32/64位 现在对于Linux,我认为我们只有一