我已经尝试了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使用的版本?
答案 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。