Jenkins或Maven在类路径上放置错误的tools.jar

时间:2015-06-29 01:32:27

标签: java maven jenkins tools.jar

我有一个复杂的设置,我需要能够使用不同的JDK编译不同的项目。所以,目前我有一个docker镜像,它手动安装了Oracle JDK 5和Oracle JDK 6,并通过apt-get安装了Open JDK 8(因此它是图像中的默认java)。

在我的一个项目中,我将项目JDK设置为Oracle JDK 6,Jenkins正确使用此JDK来编译项目。但是,在传递给编译器的类路径参数中,Jenkins正在添加JDK 8 tools.jar和而不是 JDK 6 tools.jar。

在代码中,遗憾的是,我们正在调用com.sun.tools.javac.Main,并且此类的import语句正在尝试从JDK 8 tools.jar导入。因此,编译失败,说明:

class file has wrong version 52.0, should be 50.0

那么,我怎样才能让Jenkins使用正确的tools.jar?

我想我可能会强制JDK 6 tools.jar成为类路径上的第一个项目,因此JDK 8类将被忽略,但我不是100%肯定会工作(或者如果它在Jenkins中是可能的),这似乎是一种可怕的方式。

注意:我无法真正将任何系统属性更改为总是使用JDK 6,因为有些项目需要使用适当的工具使用JDK 8进行编译.jar !

编辑:我将Maven添加到标题中,因为我怀疑可能是实际修复需要的地方。

编辑2:我开始调查Maven角度,我发现有人实际上已经为我们的某个POM文件添加了一个依赖项,但是这样做会导致错误的工具.jar正在使用......我想......

1 个答案:

答案 0 :(得分:0)

解决这个问题的最简单方法似乎是在我们的Nexus实例中安装tools.jar并在com.sun:tools上添加常规依赖项。