簡體   English   中英

mvn -install期間的編譯錯誤

[英]Compilation error during mvn -install

我已經嘗試了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使用的版本?

如果您使用的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>

將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>

這與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。

try-with-resources僅在Java 1.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>

您的java -version返回了正確的Java 8版本,Java版本:1.8.0_77-debug,供應商:Oracle Corporation確保您具有javac -version也可以正確返回Java版本:1.8.0_77-debug,供應商:Oracle Corporation。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM