构建Minecraft客户端时Gradlew报错:无法获取可变Windows环境变量映射
编译Gamesense Minecraft客户端时的环境变量映射错误解决
问题详情
编译Gamesense Minecraft客户端时,持续报错:
FAILURE: Build failed with an exception. * What went wrong: Unable to get mutable Windows environment variable map
添加--stacktrace参数后得到的堆栈信息:
* Exception is: net.rubygrapefruit.platform.NativeException: Unable to get mutable Windows environment variable map at net.rubygrapefruit.platform.internal.WrapperProcess.getWindowsEnv(WrapperProcess.java:127) at net.rubygrapefruit.platform.internal.WrapperProcess.setEnvInternal(WrapperProcess.java:100) at net.rubygrapefruit.platform.internal.WrapperProcess.setEnvironmentVariable(WrapperProcess.java:85) at org.gradle.internal.nativeintegration.processenvironment.NativePlatformBackedProcessEnvironment.setNativeEnvironmentVariable(NativePlatformBackedProcessEnvironment.java:36) at org.gradle.internal.nativeintegration.processenvironment.AbstractProcessEnvironment.setEnvironmentVariable(AbstractProcessEnvironment.java:67) at org.gradle.internal.nativeintegration.processenvironment.AbstractProcessEnvironment.maybeSetEnvironment(AbstractProcessEnvironment.java:41) at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:65) at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:36) at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:122) at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:50) at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:295) at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:63) at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:46) at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144) at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642) at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:55) at java.base/java.lang.Thread.run(Thread.java:1623) Caused by: java.lang.reflect.InaccessibleObjectException: Unable to make field private static final java.util.Map java.lang.ProcessEnvironment.theCaseInsensitiveEnvironment accessible: module java.base does not "opens java.lang" to unnamed module @3f0ee7cb at java.base/java.lang.reflect.AccessibleObject.throwInaccessibleObjectException(AccessibleObject.java:387) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:363) at java.base/java.lang.reflect.AccessibleObject.checkCanSetAccessible(AccessibleObject.java:311) at java.base/java.lang.reflect.Field.checkCanSetAccessible(Field.java:181) at java.base/java.lang.reflect.Field.setAccessible(Field.java:175) at net.rubygrapefruit.platform.internal.WrapperProcess.getWindowsEnv(WrapperProcess.java:124) ... 16 more * Get more help at https://help.gradle.org
当前使用的Gradlew和JDK版本:
------------------------------------------------------------ Gradle 4.10.3 ------------------------------------------------------------ Build time: 2018-12-05 00:50:54 UTC Revision: e76905e3a1034e6f724566aeb985621347ff43bc Kotlin DSL: 1.0-rc-6 Kotlin: 1.2.61 Groovy: 2.4.15 Ant: Apache Ant(TM) version 1.9.11 compiled on March 23 2018 JVM: 20.0.1 (Oracle Corporation 20.0.1+9-29) OS: Windows 10 10.0 amd64
JDK版本:20.0,已正确配置JAVA_HOME和Path环境变量。
错误原因
核心问题是Gradle版本与JDK版本不兼容:
- Gradle 4.10.3是2018年发布的旧版本,仅支持JDK 7到JDK 11,完全不兼容JDK 16及以上的模块化机制。
- JDK 9及以后引入的模块系统,限制了反射访问Java核心模块的内部字段,而Gradle 4.x的内部代码依赖反射修改
java.lang.ProcessEnvironment的私有字段,这在JDK 20中被模块权限禁止,直接抛出InaccessibleObjectException。
解决方案
方案1:降级JDK版本
安装并配置Gradle 4.10.3支持的JDK版本,推荐:
- JDK 8(长期支持版本,兼容性最优)
- JDK 11(另一个长期支持版本,适合需要部分新特性的场景)
配置时确保JAVA_HOME指向新安装的JDK,并调整Path优先级,保证系统优先使用该版本。
方案2:升级Gradle版本
将项目中的Gradle版本升级到支持JDK 20的版本(需Gradle 7.5及以上,推荐Gradle 8.x):
- 修改项目根目录下的
gradle/wrapper/gradle-wrapper.properties文件,将distributionUrl替换为对应版本的Gradle包地址,例如:distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip - 重新运行
gradlew build,Gradle会自动下载并使用新版本。
注意:升级Gradle后可能需要调整项目中的构建脚本(如
build.gradle),适配新版本的语法和API变化。
内容的提问来源于stack exchange,提问作者Beronicous
相关产品推荐
相关产品推荐

