使用GluonFX Gradle插件生成原生可执行文件时遇ClassNotFoundException
解决GluonFX原生打包ClassNotFoundException问题
针对非模块化JavaFX项目使用GluonFX Gradle插件打包时出现的java.lang.ClassNotFoundException: test.demo.HelloApplication异常,可按以下步骤排查修复:
1. 明确配置主类
确保Gradle的application插件和gluonfx插件都正确指定主类(若Launcher是实际入口类,替换为test.demo.Launcher):
plugins { id 'application' id 'org.openjfx.javafxplugin' version '0.0.13' id 'com.gluonhq.gluonfx-gradle-plugin' version '2.1.1' } application { mainClass.set("test.demo.HelloApplication") } gluonfx { mainClass.set("test.demo.HelloApplication") // 非模块化项目需添加此配置,确保插件识别完整类路径 runtimeArgs = ["--class-path", sourceSets.main.runtimeClasspath.asPath] }
2. 强制纳入项目类到原生镜像
若主类配置后仍报错,显式告知GluonFX将项目编译类纳入原生镜像构建范围,在gluonfx块中添加:
gluonfx { // ... 其他已有配置 nativeImage { args.add("--include-classes=test.demo.*") } }
3. 验证类路径完整性
执行gradlew gluonfxRun测试原生运行,若仍报错,检查项目编译类是否在build/classes/java/main目录下,可通过以下命令查看完整运行类路径:
./gradlew printRuntimeClasspath
确认输出包含build/classes/java/main目录和所有依赖Jar包。
4. 清理缓存后重建
GluonFX的原生镜像缓存可能导致异常,执行以下命令清理后重新构建:
./gradlew clean gluonfxBuild nativeRun
内容的提问来源于stack exchange,提问作者Stefan Rainer
相关产品推荐
相关产品推荐

