mvn -install期间的编译错误

时间:2016-06-13 06:09:03

标签: java maven

我已经尝试了mvn install和mvn clean install并且他们都抛出了同样的错误:

[Error] *dir/class.java* try-with-resources is not supported in -source 1.5

以下是我的环境信息:

Apache Maven 3.3.9 (bb52d8502b132ec0a5a3f4c09453c07478323dc5; 2015-11-11T00:41:47+08:00)
Maven home: /opt/maven
Java version: 1.8.0_77-debug, vendor: Oracle Corporation
Java home: /usr/lib/jvm/java-1.8.0-openjdk-1.8.0.77-0.b03.el6_7.x86_64-debug/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "2.6.32-431.23.3.el6.x86_64", arch: "amd64", family: "unix"

是因为maven在java 1.5上运行但不是1.8吗?如果有,是否有方法可以更改maven使用的版本?

5 个答案:

答案 0 :(得分:3)

如果您使用仅可从特定Java版本获得的Java功能,则应在pom.xml

中声明它
<properties>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
    ...
</properties>

运行PATH时,相应的JDK应位于mvn

e.g。

JDK_HOME=/usr/lib/jvm/java-1.8.0-openjdk-1.8.0.77-0.b03.el6_7.x86_64-debug/
export PATH=${JDK_HOME}/bin:${PATH}
mvn <your_maven_parameters>

答案 1 :(得分:0)

将java版本更改为1.7或更高版本

您可以覆盖pom中的版本

        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>

在spring-boot项目中,您可以覆盖属性

中的版本
<properties>
    <java.version>1.8</java.version>
</properties>

答案 2 :(得分:0)

这与Linux无关。您遇到的唯一问题是您使用的是由Java 7引入的try-with-resource,默认情况下,maven配置为使用1.5规范编译java源代码。如果您需要使用try-with-resource功能,则在指定@UUID时,您可以配置maven-compiler-plugin以使用源和目标1.7进行编译

  

是因为maven在java 1.5上运行而不是1.8?

不,Maven可以在任何Java版本上运行(我不知道Maven没有运行哪个版本的Java)。但是我认为Maven可以编译的最大版本取决于Maven运行的Java版本。即如果您的maven在JDK 7上运行,那么源和目标的最大版本也将是Java 7。

答案 3 :(得分:0)

try-with-resources仅适用于java 1.7。为此,您需要使用源java版本到&gt; = 1.7并且目标版本&gt; = 1.7(即&gt; = $ source.version)

public T Max<T>() where T : IComparable

答案 4 :(得分:-1)

你的java -version返回了正确的Java 8版本, Java版本:1.8.0_77-debug,供应商:Oracle Corporation 确保你的javac -version也正确返回 Java版本:1.8.0_77-debug,供应商:Oracle Corporation。