【问题标题】:Java Fatal Error: Unable to find package java.lang in classpath or bootclasspathJava 致命错误:无法在类路径或引导类路径中找到包 java.lang
【发布时间】:2014-06-01 21:10:12
【问题描述】:

我收到了这个错误

Error:java: Fatal Error: Unable to find package java.lang in classpath or bootclasspath

在 IntelliJ 中,当我尝试构建/编译 any 项目时。这里应该说明的是,NetBeans、Eclipse 甚至 javac 命令行都可以编译、构建和执行同一个项目而不会出错。这就是为什么我怀疑问题出在 IntelliJ 上,所有其他 IDE 都运行良好。

在 IntelliJ 中,我已经:

  • 重新启动,重新安装
  • 使缓存无效/重新启动
  • 在项目 JDK 中删除/读取 JDK
  • 在平台设置中删除/读取了 JDK
  • 重建/重新编译

    在 Windows 中,我已经:

  • 已删除/重新安装 Java SDK
  • 已删除/重新添加系统变量上的 JAVA_HOME、PATH 和 CLASSPATH
  • 在用户变量上尝试了上述方法
  • 删除并重新安装 IntelliJ IDEA

    我已经在 Internet 上搜索过此类问题,在 Stack Overflow 上我发现:
    Question #1 | Question #2 | Question #3 | Question #4 | Question #5
    还有 30 多个网站,并尝试了所有答案...
    Here 你可以看到我上次尝试构建/编译的 IntelliJ 项目结构

    收到此错误时,我使用的是 Java 1.8,几个小时后,我安装了 Java 1.7,项目运行良好。也许 IntelliJ 不支持 Java 1.8?

    无论如何,如果有人知道如何让 Java 1.8 与 IntelliJ 一起工作,那就太好了。

  • 【问题讨论】:

    • 那么您使用的是哪个版本的 IntelliJ?据我所知,13.1 及更高版本原生支持它。
    • 使用最新版本13.1.3
    • IntelliJ 通常可以在 java 8 上正常工作(反正我没有遇到类似的问题)。你的配置似乎没问题——我检查了你的图片,我看不出有问题。也许你应该向 jetbrains 报告这个问题——它看起来像是某种奇怪的错误。
    • 这就是我解决问题的方法stackoverflow.com/a/44092850/2581314

    标签: java intellij-idea compiler-errors ide


    【解决方案1】:

    我只是在这方面花了几个小时,并找到了一个可能对您也有用的解决方案。 IntelliJ 似乎有一个错误,它期望 JDK 位于与指定不同的目录中。我按照以下步骤操作:

    • 打开intelliJ,点击帮助->在资源管理器中显示登录
    • 修改 build-log/build-log.xml 并将 <priority value="info" /> 更改为 <priority value="debug" />,您可能需要以管理员身份运行编辑器
    • 运行编译失败并显示“Error:java: Fatal Error: Unable to find...”
    • 打开 build-log/build.log 并搜索 rt.jar,你应该在一个包含一组其他 JRE 库的块中找到它,并且指向该文件的目录应该是错误的

    在我的例子中,JDK 包含在 D:\Development\software\jdk1.8.0_20 中,而日志指向 C:\Users\Vladimir\Development\software\jdk1.8.0_20

    我通过将我的 JRE 复制到日志中预期的位置来解决了这个问题。就像你的情况一样,这似乎只发生在 JDK 1.8 上。

    【讨论】:

    • 谢谢,但这里没有用,我认为这是一个错误或什么,已经向开发人员发送了消息。
    • 我通过编辑%LOCALAPPDATA%/IDEA/config/options/jdk.table.xml 解决了这个问题。我不知道它最初是如何混淆的,所以现在我正在等待问题再次出现。 (IntelliJ 14)
    【解决方案2】:

    问题来自 IntelliJ 错误(至少存在于版本 14 中)。 当您的 JDK 目录位于用户配置文件目录下时,就会发生这种情况。例如,JDK 位于此目录中(适用于 Windows):

    C:\Users\myuser\jdk1.8.0_20

    将存储在 IntelliJ 内部配置(文件 'jdk.table.xml')中:

    $USER_HOME$\jdk1.8.0_20

    但您的 %USER_PROFILE% 环境变量可能指向其他(非默认)位置。然后 IntelliJ 会看错目录。

    可能的修复: 将您的 JDK 安装在您的配置文件目录之外的其他目录中。 喜欢:

    C:\Programs\jdk1.8.0_20

    然后注册此 JDK 以在您的 IntelliJ 项目设置中使用。

    【讨论】:

    • 奇迹般地问题解决了。我接受您的回答,因为在我看来,可以解决问题。谢谢!
    【解决方案3】:

    在使用 Gradle 导入 Java 项目后,我在带有 IntelliJ 2018.1.4 的 Arch Linux 4.16.13 上遇到了这个问题。我确保在“项目设置”->“项目”中有一个已注册的 JDK,但 IntelliJ 无法从 JDK 中找到类,例如 java.util.List

    解决方案是在与现有 JDK 相同的路径中添加一个新的 JDK 条目(在我的例子中为/usr/lib/jvm/java-8-openjdk)。这将导致 IntelliJ 将 jre 下的文件放到类路径中,而对于旧的 JDK 条目,只有 lib 下的文件在类路径中。

    【讨论】:

      【解决方案4】:

      遇到了同样的问题。如果其他答案很复杂,则对其他人进行简单的修复。

      转到文件 -> 项目结构 在 Project SDK 下,选择 new 并添加另一个 JDK。

      在我的情况下,默认使用的是 1.8,即 build 181。我选择了我最近下载的 1.8.0_192。

      应用后,项目会自行加载。 当我重新运行测试时,它可以工作!

      【讨论】:

      • 试过了,遇到了同样的问题。
      【解决方案5】:

      如果在 netbeans 中导入项目时出现此问题,然后尝试创建一个新项目,然后检查新创建项目的属性并将这些属性与您导入的项目匹配,在我的情况下,android 的目标之间存在差异包版本。

      【讨论】:

      • 不,它只与 IntelliJ、eclipse 和 netbeans 一起工作就像一个魅力。已经尝试匹配选项但没有成功。还是谢谢你!
      【解决方案6】:

      据我了解,调试了几个小时,问题出在安装 jdk1.8 的位置(/Library/Java/JavaVirtualMachines/jdk1.8.0_92.jdk/Contents/Home),而不是在 System/ 下图书馆)。

      因此必须在 intellij 中进行以下修复 1. 对于现有的项目,右键选择模块设置,SDK 并添加 1.8 作为版本。 2. 使用终端转到 ~/Library/Preferences//options/。删除 jdk.table.xml 中旧的 JDK 特定行。更新 project.default.xml 中的默认版本

      清理您在 intellij 中的项目并构建。它应该使用新的 jdk 和同步。

      【讨论】:

        猜你喜欢
        • 2015-05-10
        • 2014-10-09
        • 2012-12-17
        • 1970-01-01
        • 1970-01-01
        • 2012-09-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多