Gradle执行customFatJar打包时报错找不到Path.of()符号如何解决
问题根因
Path.of(java.lang.String) 是Java 11及更高版本才新增的API,你在NetBeans中可以正常运行项目,是因为IDE内为项目单独配置的JDK版本≥11;但命令行执行Gradle任务时,Gradle默认调用的全局JDK版本低于11,编译阶段无法识别该API就会抛出找不到符号的报错。
解决步骤
- 第一步:先验证Gradle使用的JDK版本
在命令行执行gradle -v,查看输出中的JVM版本字段,如果版本号低于11即可确认是版本不匹配问题。 - 第二步:在build.gradle中显式指定编译的Java版本
追加如下配置,版本号和你项目实际使用的JDK版本保持一致即可:
如果你使用的是Java 17,把java { sourceCompatibility = JavaVersion.VERSION_11 targetCompatibility = JavaVersion.VERSION_11 }VERSION_11改成VERSION_17即可。 - 第三步:修复过时的Fat Jar配置(可选,避免后续依赖缺失问题)
你当前用的configurations.compile在新版Gradle中已经被废弃,建议替换为configurations.runtimeClasspath,修改后的任务代码如下:task customFatJar(type: Jar) { manifest { attributes 'Main-Class': 'com.Reject.Main' } baseName = 'all-in-one-jar' from { configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) } } with jar } - 第四步:如果修改后仍报错,升级Gradle版本
不同Gradle版本支持的最高JDK版本有对应要求:Java 11需要Gradle 5.0及以上版本,Java 17需要Gradle 7.3及以上版本,你可以根据自己的JDK版本升级对应Gradle即可。
内容的提问来源于stack exchange,提问作者Andhika Gannesha Gemilang
相关产品推荐
相关产品推荐

