2014-04-18 43 views
2

我正在和一个团队合作一个maven项目,并且我在Jenkins为它建立了一个构建工作。Jenkins不会使用Java 7编译器

最近,团队中的某人添加了切换字符串的代码。这引起了建立詹金斯失败,出现以下错误:

error: strings in switch are not supported in -source 1.5 

所以我当然认识詹金斯必须使用Java 7,而不是Java 5

首先,我远程化到服务器,打开一个cmd,并做了where javajava -version。我检查了我的环境变量和路径。一切都指向相同的Java 7 jdk目录:C:\Java\jdk1.7.0_21

然后我检查了Jenkins,看它是否配置为使用正确的JDK。它是: Jenkins JDK

事实上,这是Jenkins服务器设置使用的唯一Java,它是服务器中唯一安装的Java。

作为最后的手段,我将JDK参数插件安装到Jenkins中。然后我将项目设置为使用Java 7的参数:

Parameter JDK

不过,我仍然得到同样的错误。

我错过了什么吗?什么可能导致这个?最重要的是,我怎样才能解决它,让詹金斯使用-source 1.7而不是-source 1.5

+0

并且mvn编译做的工作吗? – fge

+0

如果您使用Maven,那么您的pom.xml如何?它指定了什么JVM?这可能是'源1.5'来自何处。 – jedison

+1

这些是Jenkins的JDK配置。你也应该检查你的'pom'是否有类似的设置(http://maven.apache.org/plugins/maven-compiler-plugin/examples/set-compiler-source-and-target.html)。 – toniedzwiedz

回答

4

检查您的pom.xml以及在那里指定了哪些Java版本(用于源代码)。这可能是source 1.5的来源。

<properties> 
    <jee.level>1.4</jee.level> 
    <jdk.level>1.5</jdk.level> 
</properties> 

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-compiler-plugin</artifactId> 
    <configuration> 
     <source>${jdk.level}</source> 
     <target>${jdk.level}</target> 
    </configuration> 
</plugin> 
+0

它没有指定......我认为这是问题。我确定添加maven-compiler-plugin并指定source和target为'1.7'将会修复它。我想知道为什么它拖欠1.5。那里有什么见解? –

+0

请确定,让我们知道是否带有项目属性的maven-compiler-plugin'修复了这个问题。 – jedison

+0

它修复了它。感谢您指点我正确的方向! (我实际上觉得有点傻,因为我之前做过这个 - 只是忘了考虑pom。) –