如何在Windows上获取OpenJDK 11的tools.jar文件?

19

背景: 我正在尝试按照这里的说明在Windows上构建Hadoop。我已经安装了OpenJDK 11,但在运行mvn package时遇到以下问题:

Could not resolve dependencies for project org.apache.hadoop:hadoop-annotations:jar:2.5.0-SNAPSHOT: Could not find artifact jdk.tools:jdk.tools:jar:1.6 at specified path C:\Program Files\Java\jdk-11.0.1\..\lib\tools.jar

我意识到在Windows版本的OpenJDK 11中没有tools.jar文件。那么我需要从源代码构建吗?如何获得OpenJDK 11的tools.jar Maven工件?


@nullpointer 我已在我的沙盒中确认,Hadoop 2.9.2 可以与 JDK 1.8 兼容,并且我正在使用 OpenJDK 发布版。话虽如此,JEP 220 的改进可能会阻止任何 Hadoop 2.x 系列在 Java 9 上运行。 - Edwin Buck
1
更好的跟踪进展的链接是 Hadoop and Java 9, 10, 11,因为他们的目标是与 LTS 版本兼容,而不是在短期内兼容 9 和 10 版本。 - Naman
基本上所有依赖于“tools.jar”的工具现在都默认在jdk类路径上,因此您不需要导入它。问题是hadoop期望导入该jar包。 - deFreitas
1个回答

18

这在JDK 9中被删除了。

JEP 220删除了众所周知且经常被引用的JAR文件rt.jar和tools.jar。根据其描述,“先前存储在lib / rt.jar,lib / tools.jar,lib / dt.jar和其他各种内部jar文件中的类和资源文件现在将以更有效的格式存储在lib目录中的特定于实现的文件中。

我建议您使用更新版本的Apache Hadoop。如果更新版本也不支持Java 11,请将您的Java降级到1.8。

例如,当前稳定的Apache Hadoop版本为2.9.2,并且在其安装说明中,它明确引用了JDK 9之前的JDK版本。为了正确支持它,我建议您使用OpenJDK 1.8。

Hadoop 3.1.1可以使用,如果发现Java版本对您的成功至关重要,建议尝试该版本。


“无论是在寻找 tools.jar 文件,你能否说明一种找出它的方法?” - Naman
1
Apache Hadoop正在寻找tools.jar。您使用的JVM是在您的版本的Apache Hadoop最初发布之后发布的,即使之后有维护(无新功能)版本。如果没有人重写它,您将无法使旧软件与新模式匹配。很可能您的选择是升级Apache Hadoop到3.1.1(并希望它足够新以支持JDK 11),或者安装并使用Java 8。 - Edwin Buck
Apache Hadoop 正在寻找 tools.jar。我对此表示怀疑......希望它足够新,以支持 JDK 11。抱歉这并没有回答问题。 - Naman
2
@nullpointer 我不确定,但我愿意相信你。Hadoop有很多组件,虽然我确定HDFS和MapReduce可能不需要它,但我不会对整个套件进行全面调查。我知道的是,在JDK 1.11中不会得到tools.jar。所以,无论如何,他都必须调整到JDK 1.8。当然,如果你认为Hadoop不需要它,那么请继续在1.11上运行Hadoop,并告诉我你是如何解决tools.jar的问题的。我很感兴趣。 - Edwin Buck
我知道的是你没有得到tools.jar...同意...更正为JDK 11而不是1.11...我很感兴趣。这就是我感兴趣的,认为你会发布一个答案。别误会,但我实际上正在寻找一个答案,而不是将JDK8作为答案。 - Naman
2
@nullpointer 修复问题的方法是从软件中删除寻找名为tools.jar的文件的假设,而是依赖于JVM中已经存在的JAR文件来提供所需的功能。由于他告诉我他正在使用“hadoop”,无论他使用什么,他都应该查看他所称之为“hadoop”的内容。如果您认为可以在删除后修补JDK以具有tools.jar,则可以这样做。但这不是可支持的解决方案,因为您必须部署一个分叉版本的JVM / JDK(并且不能称其为Java)。 - Edwin Buck

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接