NetBeans生成Java程序EXE安装包报错求助
解决方案及替代打包方案
针对JDK20的脚本引擎报错
JDK 15及以后版本移除了内置的Nashorn JavaScript引擎,而NetBeans的打包模块可能依赖它处理脚本逻辑,导致Unable to create javax script engine for javascript错误。解决方式:
- 添加Nashorn依赖:如果项目用Maven,在
pom.xml中加入以下依赖:
Gradle项目则在<dependency> <groupId>org.openjdk.nashorn</groupId> <artifactId>nashorn-core</artifactId> <version>15.4</version> </dependency>build.gradle中添加:implementation 'org.openjdk.nashorn:nashorn-core:15.4' - 升级NetBeans到最新版本:较新的NetBeans版本已适配JDK 20+,可能已移除对Nashorn的依赖,或自动处理引擎缺失问题。
针对JDK14的FXJar找不到报错
从JDK 11开始,JavaFX被从JDK中剥离为独立模块,com.sun.javafx.tools.ant.FXJar这类Ant任务不再默认包含在JDK里,导致报错。解决方式:
- 引入JavaFX Ant任务依赖:下载JavaFX SDK,找到
ant-javafx.jar(通常在lib目录下),将其添加到NetBeans的Ant类路径中,或者在项目的Ant构建脚本中显式引入该jar包。 - 改用JavaFX官方打包工具:放弃NetBeans自带的Package功能,直接使用JavaFX的
javapackager(JDK14及以前)或JDK内置的jpackage(JDK14+)。
替代打包方案(推荐)
方案1:使用JDK内置的jpackage
这是官方推荐的打包工具,从JDK14开始内置,支持生成Windows EXE、Mac DMG、Linux DEB/RPM等格式,步骤如下:
- 确保项目已编译为包含主类清单的可执行jar包。
- 打开终端切换到项目输出目录,执行类似命令:
可添加图标、安装路径等自定义参数,具体参考jpackage官方文档。jpackage --name 你的项目名 --input ./jar目录 --main-jar 你的主jar包.jar --main-class 你的主类全路径 --type exe
方案2:使用Maven/Gradle的JavaFX插件
- Maven:配置
javafx-maven-plugin后,执行mvn jfx:jar生成可执行jar,再执行mvn jfx:native生成原生安装包。 - Gradle:配置
javafx-gradle-plugin后,执行gradle jfxNative生成安装包。
方案3:使用Launch4j
这是轻量级工具,可将Java jar包包装成Windows EXE文件,支持设置图标、指定JRE路径等,操作简单,适合快速打包。
内容的提问来源于stack exchange,提问作者AHMED
相关产品推荐
相关产品推荐

