一、复现
错误现场
在idea内部终端执行gradle构建命令1
./gradlew build installDist
Task :demo:compileJava FAILED
/xxx/xxx/xxx/App.java:6: 错误: 无法访问Array
import java.lang.reflect.Array;^错误的类文件: /modules/java.base/java/lang/reflect/Array.class
类文件具有错误的版本 55.0, 应为 53.0
请删除该文件或确保该文件位于正确的类路径子目录中。
1 个错误JAVA环境
本机安装有1.8和11两个JDK版本
二、定位
- 查看项目内gradlew命令文件,69行代码开始设置java相关命令,是从$JAVA_HOME目录下获取。
1
2
3
4
5
6
7
8
9
10
11
12
13
14# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi - 查看$JAVA_HOME变量问题来了,居然没有打印任何结果
1
echo $JAVA_HOME
- 查看环境变量配置
1
vim ~/.bash_profile
本地环境变量已经配置了,但是$JAVA_HOME没有生效1
2
3
4
5
6JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home"
CLASS_HOME="$JAVA_HOME/lib"
PATH=".;$PATH:$JAVA_HOME/bin"
export JAVA_HOME
export CLASSPATH
export PATH - 尝试加载
1
source ~/.bash_profile
- 重新运行可以正常运行
1
./gradlew build installDist
三、问题
gradle不能正常打包,是因本地JAVA_HOME配置没有生效。使用了系统默认的JDK 11进行构建,项目需要的是低版本JDK8。四、解决
添加一行1
vim ~/.zshrc
1
source ~/.bash_profile