gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 13:42:47 25 4
gpt4 key购买 nike

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

在我的一个项目中,我将项目 JDK 设置为 Oracle JDK 6,并且 Jenkins 正确使用此 JDK 来编译该项目。但是,在传递给编译器的类路径参数中,Jenkins 添加了 JDK 8tools.jar,而不是 JDK 6tools.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,因为某些项目需要使用适当的 tools.jar 使用 JDK 8 进行编译!

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

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

最佳答案

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

关于java - Jenkins 或 Maven 在类路径上放置了错误的tools.jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31106567/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com