当前位置: 首页 > 面试题库 >

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

邓建柏
2023-03-14
问题内容

我有一个我希望可以被任何用户轻松安装的程序,我认为创建本地安装程序是必经之路。我使用了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文件的内容:

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。该错误应该发生。

任何想法如何解决这个问题?


问题答案:

我刚遇到一个与本机打包的JavaFX应用程序类似的问题,该应用程序出现“由于主类异常而失败”错误。我的package.cfg与您的相同。

我所做的诊断只是从命令行手动运行jar文件(例如Project.jar),并查看堆栈跟踪是什么,例如,如果您的Main类位于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”。文本”)。



 类似资料:
  • 我有一个程序,我想能够很容易地安装由任何用户,我认为创建一个本机安装程序是走的路。我使用了Netbeans 8.0的功能(Project properties>Enable native packaging,Package as)。我能够创建一个工作的本地安装程序。安装后,我有以下文件树: 从project.jar执行程序起作用。但是,当我尝试启动Project.exe时,在一个没有任何详细信息的

  • 我想使用ApacheJMeter提供的API从Java程序创建和运行测试脚本。我已经了解了ThreadGroup和Samplers的基本知识。我可以使用JMeter API在Java类中创建它们。 然而,我不知道如何创建一个结合线程组和采样器的测试脚本,然后从同一个程序执行它。有什么想法吗?

  • 问题内容: 我已经在JCreator中编写了Java程序,一切都已完成,但是我想从中创建一个可执行文件,即,我不想通过加载Java类并编译然后执行来运行程序,而是将其作为独立的可执行文件。 最快的方法是什么? 问题答案: 你可以使用SDK附带的jar工具,并创建该程序的可执行版本。 这就是完成的方式。 我将从命令提示符中发布结果,因为它更容易,但是使用JCreator时也应如此。 首先创建你的程序

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

  • 问题内容: 如何使Java程序可安装? 我在Eclipse工作区中保存了一个应用程序。 我可以将其导出为文件。 这是针对“实际”应用程序的。 如何导出为“ .exe”文件或“ .dmg”,以便可以将其安装在另一台计算机上? 由于Java与平台无关,因此我认为这是导出特定操作系统的问题。 我在Google上搜索了很多书,读了许多不同的故事,所以我希望有经验的人来回答。 问题答案: 我猜您正在寻找的不

  • 我试图用自定义脚本设置安装程序变量,但随后注意到媒体向导中的“目录名”和“自定义基本目录”字段不接受安装程序变量。 我还尝试在媒体向导中不使用“自定义基本目录”选项,并在“安装位置”屏幕前使用自定义脚本设置变量,但该屏幕似乎根据媒体向导设置计算安装目录。 上下文:我们构建一个产品和一个测试安装程序。prod版本应该建议在中安装。测试安装程序不请求特权,应该建议在用户主页中安装。 定义了一个编译器变