tools.jar不随jdk安装一起提供。

6
我正在尝试下载和安装新的jdk来提高我的java水平,但似乎jdk安装程序在lib目录中没有tools.jar文件。 我错过了什么吗? 我尝试从此链接https://www.oracle.com/java/technologies/downloads/#jdk17-windows安装它 我尝试了exe和msi两种方式,但都无法正常工作,当我尝试运行代码时,我得到了Error:Cannot determine path to 'tools.jar' library for 17 (C:\Program Files\Java\jdk-17)

我尝试搜索这个问题,但大多数问题都是由安装了jre或者没有设置set "JAVA_HOME=C:\Program Files\Java\jdk-17"的人提出的。
>java --version
java 17 2021-09-14 LTS
Java(TM) SE Runtime Environment (build 17+35-LTS-2724)
Java HotSpot(TM) 64-Bit Server VM (build 17+35-LTS-2724, mixed mode, sharing)

2
你需要回到Java 8,因为在Java 9中已经删除了它,请参见已删除的rt.jar和tools.jar - Scratte
1
运行Java程序不需要tools.jar。我不知道IntelliJ是否是最新版本?如果是我的话,我会搜索任何有关IntelliJ入门的教程。如果你有旧版本的IntelliJ,我相信你仍然可以从Oracle下载Java 8。 - Scratte
2
Java 17于2021年9月14日发布,因此我怀疑您的IntelliJ可能会对此感到困惑。您可以尝试使用Java 16,这是最新的长期支持版本。但是,该版本于2021年3月16日发布,因此可能会使您的IDE出现类似的混乱。如果Java 14可行,则一切都很好 :) - Scratte
2
你应该将你的IntelliJ升级到2021版本。 - OneCricketeer
1
我不确定他们做了哪些更改会影响IDE。据我所知,这些更改大多对IDE开发人员有趣,并且很难获得“快速”概述。对于更明显的更改,我通常使用维基百科Java版本历史,该页面单独链接到每个JEP(JDK增强提案)。看起来,我对最新的长期支持版本17的认识是错误的。 - Scratte
显示剩余6条评论
2个回答

8

tools.jar 主要包含了Java编译器 javac

JDK8 转换为 JDK9 破坏了大量的Java功能,其中就包括移除了这个 jar 文件。现在它被放在了一个模块中。任何寻找 tools.jar 的软件都将与这种新模式不兼容。Oracle 声称这些都没有被规范化,而且公平地说,Oracle/OpenJDK 确实没有。换句话说,依赖 "tools.jar" 实际上从来没有得到支持,但是那些依赖于它的东西想要编译 Java 代码。除了随应用程序一起发布编译器(存在许可证问题),没有其他短期解决方案。

无论如何,解决方案非常简单:要么升级导致您遇到此错误的软件,要么如果您已经升级但无法回退,则降级至 JDK8。

请注意,您可以在单个系统上安装多个 JDK,并且您可以在 JDK8 上运行 IntelliJ,然后在其中编写针对 jDK17 的 Java 代码,没有问题。


谢谢您的回复。在您的评论之前,我刚回复了@Scratte。正如我所说,当我选择“项目SDK”为“14.0.1”并创建新项目时,它不会抛出任何错误,编译并输出“hello world”,但如果我选择“17”,则会抛出“tools.jar”错误。这是为什么呢?14.0.117之间有重大变化吗?如果没有,我想我只能使用14.0.1 - Va_M
没有主要更改。你的IntelliJ显然还不兼容JDK17,并且似乎将其错误地识别为JDK7或8。 - rzwitserloot

0

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心中找到有关如何编写良好答案的更多信息。 - Community

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