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

版权声明:本文章是作者辛勤书写的成果,如需转载,请与作者联系,并保留作者信息以及原文链接,谢谢~~ https://blog.csdn.net/blueheart20/article/details/51580510

引言: 解决在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对照
  JRE JDK
1.8 openjdk-8-jre openjdk-8-jdk
1.7 openjdk-7-jre openjdk-7-jdk
1.6 openjdk-6-jre openjdk-6-jdk

 

 

 

 

Fedora, Oracle Linux, Red Hat Enterprise Linux等各版本JDK对照
  JRE JDK
1.8 java-1.8.0-openjdk java-1.8.0-openjdk-devel
1.7 java-1.7.0-openjdk java-1.7.0-openjdk-devel
1.6 java-1.6.0-openjdk java-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,所以,不用被误会了...... 

阅读更多

扫码向博主提问

bladestone

博客专家

非学,无以致疑;非问,无以广识
  • 擅长领域:
  • 架构师
  • AI手工匠人
  • 攻城狮
  • Java老兵
  • 问题解决者
去开通我的Chat快问
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页