红联Linux门户
Linux帮助

Maven编译命令错误之编译错误的解决

发布时间:2016-07-14 15:18:54来源:linux网站作者:bladestone
引言:解决在Linux系统中,运行mvn命令碰到的一个编译问题,看看如何分析并加以解决的?
 
1.问题的提出
在基于maven进行相应命令操作之时,出现了如下错误信息:
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.1:compile  
(default-compile) on project csaro: Fatal error compiling: invalid target  
release: 1.8 -> [Help 1]  
无法完成正常的maven操作、打包操作等。
 
2.环境变量的检查
>> mvn -version
pache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5;)
Maven home: /usr/share/apache-maven  
Java version: 1.7.0_101, vendor: Oracle Corporation  
Java home: /usr/lib/jvm/java-1.7.0-openjdk-1.7.0.101-2.6.6.1.el7_2.x86_64/jre  
Default locale: en_US, platform encoding: UTF-8  
OS name: "linux", version: "3.10.0-327.3.1.el7.x86_64", arch: "amd64", family: "unix"  
[root@flybird ~]# mvn -version  
Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5;)  
Maven home: /usr/share/apache-maven  
Java version: 1.8.0_91, vendor: Oracle Corporation  
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre  
Default locale: en_US, platform encoding: UTF-8  
OS name: "linux", version: "3.10.0-327.3.1.el7.x86_64", arch: "amd64", family: "unix"  
>> java -version
[root@xxx ~]# java -version  
openjdk version "1.8.0_91"  
OpenJDK Runtime Environment (build 1.8.0_91-b14)  
OpenJDK 64-Bit Server VM (build 25.91-b14, mixed mode)  
>> echo $JAVA_HOME
为空,什么信息输出,由此可见JAVA_HOME没有设置。
>>  操作系统
CentOS 6.5
 
3.问题定位与分析
从maven的错误信息来分析,其是在编译过程中无法正常执行,1.8应为JDK的版本号,基于目前的变量信息来看,其JAVA_HOME没有设置外,其余的都是正常的。基于之前的经验来分析, Java path, java classpath, java_home三个变量需要设置,classpath一般都是跟随java_HOME来走的,故大致可以确认是由于JAVA_HOME没有设置早成的。
 
4.问题修复
分析Centos系统中的java安装信息,由于已经安装OpenJDK了,其安装的目录为: /usr/lib/jvm
>> ls /usr/lib/jvm
[root@flybird ~]# ls /usr/lib/jvm  
java     java-1.8.0      jre      jre-1.8.0
java-1.7.0      java-1.8.0-openjdk     jre-1.7.0      jre-1.8.0-openjdk
java-1.7.0-openjdk      java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64      jre-1.7.0-openjdk      jre-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64
java-1.7.0-openjdk-1.7.0.101-2.6.6.1.el7_2.x86_64      java-openjdk      jre-1.7.0-openjdk-1.7.0.101-2.6.6.1.el7_2.x86_64      jre-openjdk  
选取java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64目录,查看一下目录,发现此目录下仅有jre一个目录,在jre目录下有bin和lib目录。
设置JAVA_HOME
>>  vi ~/.bashrc     
+  export JAVA_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.91-0.b14.el7_2.x86_64/jre
重新执行此命令,发现问题依旧, 什么情况呢?
静下来心来,发现此JAVA_HOME设置的目录为JRE,而非JDK,需要指向JDK目录;关于开发类的项目,需要设置的JDK目录,两者是不同的,运行java应用只需JRE。
所以安装一下JDK,行动继续:
Maven编译命令错误之编译错误的解决
发现原来只是按照了JRE,JDK没有安装,所以需要继续安装:
>>  yum install java-1.8.0-openjdk
>> yum install java-1.8.0-openjdk-devel
 
5.问题解决
重新运行mvn,一切OK,一个问题就这样被解决了。
 
6.问题回顾
大部分Linux都默认安装的是JRE,但是开发的时候,其实需要的是JDK,所以,不用被误会了。
 
本文永久更新地址:http://www.linuxdiyf.com/linux/22372.html