javac:执行Maven命令时Mac上的目标版本无效:1.8

时间:2015-01-20 11:40:35

标签: java macos maven compilation javac

我正在尝试在Mac上运行自动化测试。我安装了Maven和java,jdk如下:

java version "1.8.0_25"
Java(TM) SE Runtime Environment (build 1.8.0_25-b17)
Java HotSpot(TM) 64-Bit Server VM (build 25.25-b02, mixed mode)

和Maven:

Apache Maven 3.2.5 (12a6b3acb947671f09b81f49094c53f426d8cea1; 2014-12-14T18:29:23+01:00)
Maven home: /usr/local/Cellar/maven/3.2.5/libexec
Java version: 1.6.0_65, vendor: Apple Inc.
Java home: /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home
Default locale: en_US, platform encoding: MacRoman
OS name: "mac os x", version: "10.9.5", arch: "x86_64", family: "mac"

当我执行Maven命令时,我收到了这个错误:

[ERROR] Failure executing javac, but could not parse the error:
[ERROR] javac: invalid target release: 1.8
[ERROR] Usage: javac <options> <source files>
[ERROR] use -help for a list of possible options
[ERROR] -> [Help 1]

我在这里搜索过,有一个被接受的解决方案就是:

sudo cp $JAVA_HOME/lib/tools.jar /Library/Java/Extensions/

我执行了这个命令,但什么都没发生!我不知道出了什么问题。

2 个答案:

答案 0 :(得分:22)

首先,通过运行命令找出安装1.8 Java的地方:

/usr/libexec/java_home -v 1.8

然后,通过运行以下命令设置JAVA_HOME环境变量:

export JAVA_HOME=<whatever the output from the previous command was>

Maven应该在之后工作,至少在那个终端窗口。

如果您不希望每次打开新终端时都必须运行这些命令,则必须在配置文件中设置JAVA_HOME环境变量。

答案 1 :(得分:3)

如果您还没有这样做,请使用maven-compiler-plugin确定要在Maven中使用的Java版本。将其放在pom.xml文件中(将<source/><target/>版本更改为您需要的JDK版本):

<build>
    <plugins>
        <plugin>
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    </plugins>
</build>

(如果您已有<build/>和/或<plugins/&gt;部分,请仅添加<plugin/>部分。)