IntelliJ编译时,致命错误:在路径和启动路径中找不到包java.lang

时间:2022-01-11 09:28:33

基础知识

主要是发现自己的Java没有安装成功:……\Java\jdk1.8.0_121\lib里面没有tools.jar,dt.jar

而假如正确安装的话,dt.jar和tools.jar位于:{Java_Home}/lib/下,而rt.jar位于:{Java_Home}/jre/lib/下,
{Java_Home}对应的本文的是……\Java\jdk1.8.0_121

rt.jar是JAVA基础类库,也就是你在java doc里面看到的所有的类的class文件
dt.jar是关于运行环境的类库

tools.jar是工具类库,编译和运行需要的都是toos.jar里面的类分别是sun.tools.java.; sun.tols.javac.;

在Classpath设置这几个变量,是为了方便在程序中 import;Web系统都用到tool.jar。

  1. rt.jar
    rt.jar 默认就在Root Classloader的加载路径里面的,而在Claspath配置该变量是不需要的;同时jre/lib目录下的

    其他jar:jce.jar、jsse.jar、charsets.jar、resources.jar都在Root Classloader中

  2. tools.jar

    tools.jar 是系统用来编译一个类的时候用到的,即执行javac的时候用到

    javac XXX.java

    实际上就是运行

    java -Calsspath=%JAVA_HOME%\lib\tools.jar xx.xxx.Main XXX.java

    javac就是对上面命令的封装 所以tools.jar 也不用加到classpath里面

  3. dt.jar
    dt.jar是关于运行环境的类库,主要是swing的包 在用到swing时最好加上。更详细的解释

参考链接:
安装java之后,找不到tools.jar 和dt.jar
其实哈,在安装JDK时一键傻瓜式安装是没有问题

JDK中rt.jar、tools.jar和dt.jar作用

问题描述

win10,本来已下载java7,程序在IntelliJ IDEA上跑得好好的。
下载java8后,修改了环境变量(C:\Program Files\Java\jdk1.7.0_79 –> C:\Program Files\Java\jdk1.8.0_121)


这里是吐槽分割线:
一台机器上可以有很多版的JDK,但是环境变量有一版就好,在不同的project里选择相应的JDK版本即可。
被自己蠢哭了 T……T


修改程序的的sdk,再次运行,出现
IntelliJ编译时,致命错误:在路径和启动路径中找不到包java.lang

解决办法

java.lang包包含着Java最基础和核心的类,在编译时会自动导入。
java.lang是最基本的类,连它都出错了,
首先第一反应是是不是JDK没有装对,因为之前改过环境变量(被自己蠢哭了 T……T),所以吭哧吭哧去重装了一次JDK,验证JDK是否安装正确:
IntelliJ编译时,致命错误:在路径和启动路径中找不到包java.lang
一般而言,只要jre>=java就可以了。

可是,问题依然没有解决。

这时发现一个很关键的一:Compilation failed: inner java compiler error
而且排除了这种可能性(set中java complier 设置的问题 ,项目中有人用jdk1.6 有人用jdk1.7 版本不一样 会一起这个错误)后,那么只能说明一个问题:工程JDK没有配置正确

  • 重新配置JDK即可,File -> Project Structure -> Platform Settings -> SDKs
  • 删除原来的JDK(“-”)
  • 添加新的JDK(“+”),选择新的JDK的路径添加即可。