有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

mvn安装期间发生java编译错误

我已经尝试过mvn安装和mvn clean安装,但都抛出了相同的错误:

[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运行在Java1.5上,而不是1.8上吗?如果是的话,是否有方法更改maven使用的版本


共 (5) 个答案

  1. # 1 楼答案

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

  2. # 2 楼答案

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

    Is it because that the maven run on java 1.5 but not 1.8?

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

  3. # 3 楼答案

    将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>
    
  4. # 4 楼答案

    如果您使用的Java功能只能从特定的Java版本获得,那么您应该在pom.xml中声明它

    <properties>
        <maven.compiler.source>1.7</maven.compiler.source>
        <maven.compiler.target>1.7</maven.compiler.target>
        ...
    </properties>
    

    运行mvn时,适当的JDK应该位于PATH

    例如

    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>
    
  5. # 5 楼答案

    try with resources仅在Java1.7中提供。为此,您需要使用源java版本来>=1.7和目标版本>;=1.7(即>;=$source.version)

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