Java Jenkins Maven编译失败,因为JDK功能不受支持?

Java Jenkins Maven编译失败,因为JDK功能不受支持?,java,maven,jenkins,Java,Maven,Jenkins,每当我使用Maven部署Jenkins构建时,它都会说我有1.3 JDK,尽管我已经安装了1.7 下面是我在使用增强型for循环时得到的错误日志的图片: 但是,我显然安装了1.7JDK 如果有人知道这个问题发生的原因以及如何解决,请在下面发布 很抱歉,我没有太多的格式化信息,但我不知道为什么会发生这种情况,因为我没有这么过时的JDK,也没有Oracle的最新更新。Maven和Jenkins也完全更新了 谢谢。maven抱怨的不是您的jdk版本,而是编译器的-source参数。较旧的Maven

每当我使用Maven部署Jenkins构建时,它都会说我有1.3 JDK,尽管我已经安装了1.7

下面是我在使用增强型for循环时得到的错误日志的图片:

但是,我显然安装了1.7JDK

如果有人知道这个问题发生的原因以及如何解决,请在下面发布

很抱歉,我没有太多的格式化信息,但我不知道为什么会发生这种情况,因为我没有这么过时的JDK,也没有Oracle的最新更新。Maven和Jenkins也完全更新了


谢谢。

maven抱怨的不是您的jdk版本,而是编译器的-source参数。较旧的Maven版本使用Maven编译器插件的一个版本,默认情况下使用-source和-target 1.3

因此,您需要做的是将项目配置为使用更高的源和目标级别,以便使用for each循环:

(摘自)


[...]
[...]
org.apache.maven.plugins
maven编译器插件
3.1
1.5
1.5
[...]
[...]

请注意,只需设置maven编译器插件的版本实际上就足够了,因为对于版本3.1,默认值为1.5,但是在主pom中显式地包含源和目标版本是一种很好的风格。

您将项目设置为根据堆栈跟踪使用默认jdk进行编译。默认值是服务器上的%JAVA_HOME%环境变量,该变量可能设置为较旧的jdk。为了使用1.7JDK进行编译,您必须在项目配置中指定它。将jdk:(默认)更改为您的1.7名称。。这就是jdk

或者您可以直接转到maven jdk并将其从(从项目继承)更改为jdk


jenkins已经有了一个与此相关的问题:

确保您有$JAVA_HOME设置,检查路径上的JAVA,检查jenkins的全局配置以及它使用的JAVA。我一开始就想到了这些。在POM中,您的maven编译器插件配置是什么样子的?
<project>
  [...]
  <build>
    [...]
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
          <source>1.5</source>
          <target>1.5</target>
        </configuration>
      </plugin>
    </plugins>
    [...]
  </build>
  [...]
</project>