问题描述:新配置了一个环境变量GRAALVM_HOME,但是通过IDEA启动Gradle一直无法识别到这个环境变量。
Determining GraalVM installation failed with message: 'gu' at '.../jdk-21.0.3.jdk/Contents/Home/bin/gu' tool wasn't found. This probably means that JDK at isn't a GraalVM distribution.
接着,我尝试Debug Gradle的编译过程,我通过System.getenv尝试去获取这个环境变量,发现确实没这个环境变量。
接着我尝试通过修改IDEA的Gradle的运行配置,去手动添加环境变量:
GRAALVM_HOME=/Users/jianchaojia/Desktop/Code/jdk/graalvm-jdk-22.0.2+9.1/Contents/Home
再次尝试进行nativeCompile编译,发现IDEA的Gradle AOT编译正常。
为什么IDEA启动的Gradle没有GRAALVM_HOME环境变量?因为IDEA启动的进程会继承IDEA进程的环境变量,而IDEA会继承操作系统的环境变量,但是通过查看IDEA继承的环境变量发现,继承操作系统的环境变量时就缺少了GRAALVM_HOME。
所以这是因为IDEA没有继承环境变量导致的,那么为什么没继承呢?因为JAVA进程在启动之后,环境变量就被缓存下来了,是不可变的,如果在IDEA运行中更改环境变量,那么对IDEA是不生效的,所以如果修改了环境变量,需要重启IDEA才能生效。
重启IDEA之后,重新查看环境变量生效。