AmazonLinux2实例ROOT用户执行mvn --version抛出ClassNotFoundException
Maven在ROOT用户下执行报ClassNotFoundException的排查与解决
问题描述
在Amazon Linux 2实例中通过Chef安装Maven后,ec2-user执行mvn --version能正常输出,但ROOT用户执行相同命令时出现ClassNotFoundException错误。已确认目录权限正常,且两个用户均可查看Java版本。
ec2-user执行结果
$ mvn --version Apache Maven 3.0.3 (r1075438; 2011-02-28 18:31:09+0100) Maven home: /opt/apache-maven-3.0.3 Java version: 11.0.14.1, vendor: Eclipse Adoptium Java home: /usr/java/jdk-11.0.14.1+1 Default locale: en_US, platform encoding: UTF-8 OS name: "linux", version: "4.14.290-217.505.amzn2.x86_64", arch: "amd64", family: "unix"
ROOT用户执行结果
# mvn --version Error: Could not find or load main class \ Caused by: java.lang.ClassNotFoundException: \
解决步骤
对齐ROOT用户的JAVA_HOME环境变量
执行echo $JAVA_HOME查看ROOT用户的Java环境变量,若与ec2-user不一致,手动设置:export JAVA_HOME=/usr/java/jdk-11.0.14.1+1 export PATH=$JAVA_HOME/bin:$PATH要永久生效,将上述命令添加到
/root/.bashrc或/etc/profile文件中。检查Maven启动脚本的路径配置
打开/opt/apache-maven-3.0.3/bin/mvn脚本,确认其中引用的Java路径为绝对路径,且未包含仅针对ec2-user的特殊配置。若发现相对路径或用户专属变量,修改为全局可用的绝对路径。修复Maven配置文件权限
确保ROOT用户可读Maven配置文件:chmod 644 /opt/apache-maven-3.0.3/conf/settings.xml同时确认整个Maven目录的权限:
chown -R root:root /opt/apache-maven-3.0.3直接用Java命令启动Maven(临时测试)
若上述步骤未解决,可直接指定Java路径执行Maven,验证是否为环境变量问题:/usr/java/jdk-11.0.14.1+1/bin/java -jar /opt/apache-maven-3.0.3/bin/mvn.jar --version若此命令正常,说明需重点修复Maven脚本或ROOT用户的环境变量配置。
内容的提问来源于stack exchange,提问作者linuxkaran
相关产品推荐
相关产品推荐

