从Java 17切回Java 8后Gradle构建失败求助
问题描述
工作区原本基于Java 8 + Gradle 4.7运行,后续升级为Java 17 + Gradle 7.x及对应依赖库。现在切回Java 8与Gradle 4.7环境时,执行命令./gradlew npmInstallDefault --stacktrace出现构建失败,已尝试「Invalidate Caches」操作并删除.gradle、.idea和build文件夹,问题仍未解决。
错误信息
FAILURE: 构建因异常失败。 - 问题原因: Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory(). Could not create service of type PluginResolutionStrategyInternal using BuildScopeServices.createPluginResolutionStrategy(). - 异常详情: org.gradle.internal.service.ServiceCreationException: Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory(). ...(省略中间堆栈信息) Caused by: java.lang.NoSuchMethodError: 'java.lang.Class sun.misc.Unsafe.defineClass(java.lang.String, byte[], int, int, java.lang.ClassLoader, java.security.ProtectionDomain)' at org.gradle.internal.classloader.ClassLoaderUtils.define(ClassLoaderUtils.java:104) ...(省略剩余堆栈信息)
解决方案
1. 确认当前使用的JDK为Java 8
- 终端执行以下命令,确保输出为Java 8版本:
java -version javac -version - IDE配置:将项目SDK设置为Java 8,同时在Gradle设置中指定Gradle JVM为Java 8,避免IDE默认用高版本JDK运行Gradle
2. 彻底终止Gradle守护进程
Gradle守护进程可能残留高版本JVM环境,执行命令杀死所有守护进程:
./gradlew --stop
3. 清理全局Gradle缓存
删除用户目录下的全局Gradle缓存文件夹,避免缓存的高版本文件干扰:
- Windows:
C:\Users\<你的用户名>\.gradle - Linux/macOS:
~/.gradle
4. 检查项目配置兼容性
确认build.gradle和settings.gradle中没有Gradle 7.x特有的配置(如新插件引入语法、依赖管理特性等),确保所有配置兼容Gradle 4.7。
内容的提问来源于stack exchange,提问作者Harish Dalmia
相关产品推荐
相关产品推荐

