【问题标题】:Jenkins or Maven Places The Wrong tools.jar On Class PathJenkins 或 Maven 在类路径上放置了错误的 tools.jar
【发布时间】:2015-06-29 01:32:26
【问题描述】:

我有一个复杂的设置,我需要能够使用不同的 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 并且此类的导入语句正在尝试从 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 和适当的 tools.jar 进行编译!

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

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

【问题讨论】:

标签: java maven jenkins tools.jar


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-10
    • 2013-06-01
    • 1970-01-01
    • 2014-07-13
    • 2015-02-16
    相关资源
    最近更新 更多