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

引言: 解决在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; 2015-11-11T00:41:47+08:00)
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; 2015-11-11T00:41:47+08:00)
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, 行动继续:

   

Debian, Ubuntu等各版本JDK对照
 JREJDK
1.8openjdk-8-jreopenjdk-8-jdk
1.7openjdk-7-jreopenjdk-7-jdk
1.6openjdk-6-jreopenjdk-6-jdk

 

 

 

 

Fedora, Oracle Linux, Red Hat Enterprise Linux等各版本JDK对照
 JREJDK
1.8java-1.8.0-openjdkjava-1.8.0-openjdk-devel
1.7java-1.7.0-openjdkjava-1.7.0-openjdk-devel
1.6java-1.6.0-openjdkjava-1.6.0-openjdk-devel

 

 

 

 

   发现原来只是按照了JRE,JDK没有安装,所以需要继续安装:

    >>  yum install java-1.8.0-openjdk

     >> yum install java-1.8.0-openjdk-devel

5.  问题解决

    重新运行mvn,一切OK, 一个问题就这样被解决了.......

6.  问题回顾

     大部分Linux都默认安装的是JRE,但是开发的时候,其实需要的是JDK,所以,不用被误会了...... 

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值