原本我的电脑是JDK13和IDEA2020.1.1,两者正好可以兼容,但是学习需要,卸载后安装了最新的JDK18,然后就开始问题不断了。
IDEA 2020.1.1和最新的JDK 18不兼容:Error:Cannot determine path to ‘tools.jar’
问题分析
- java版本问题:
JDK 9的核心变化就是引入了一种新的Java编程组件,也就是模块,按照Oracle的说法,它是一个可命名的、自描述的代码和数据集合。模块技术的核心目标是减少Java应用和Java核心运行时环境的大小与复杂性。为此,JDK本身进行了模块化,Oracle希望通过这种方式提升性能、安全性和可维护性。
为了支持Java 9的模块,引入一种新的模块化JAR文件形式,按照这种形式会在其根目录中包含一个module-info.class文件。Oracle同时提供了工具,允许我们组合和优化一组模块,形成自定义的运行时镜像(image),这样的镜像不必将整个Java运行时包含进来。模块化所带来的其他变化包括从Java运行时镜像中移除了dt.jar和tools.jar。所以IDE当然找不到tools.jar
也就是说装jdk-9.0.4或以上版本时,已经移除了dt.jar和tools.jar。配置环境变量时不再需要配置classpath变量。 - IDEA与版本不匹配问题
在下图所示可查看目前IDE所支持的java版本号,因为我用的20201.1版的IDEA,JDK17是2021才推出的,所以该版本IDE不支持JDK17的版本,所以运行不了
解决方案
- 换新版本的IntelliJ IDEA
- 更换低版本的JDK(推荐JDK8)
我采用了第二种方法,由于我之前下载了一个JDK10,所以直接就用了,然后问题就又来了。
Error: could not find java.dll Error: Could not find Java SE Runtime
卸载Java环境时我删除了环境变量,之后按照教程重新配置环境变量后,在cmd里测试java时遇到了如上的问题。
问题分析和解决办法
在PATH变量里我发现了如图所示的几个java的环境。path变量最上面多出来一个C:\Program Files(x86)\Common Files\Oracle…的变量,这个变量的路径中有一个java.exe,在执行命令行的java命令时,默认先执行这个java而不是我们自己添加的%Java_Home%\bin等等,所以我们需要把这个自己添加的变量放到这个Oracle变量的前面。