[英]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.