【问题标题】:Unable to find a javac compiler com.sun.tools.javac.Main is not on the classpath errorUnable to find a javac compiler com.sun.tools.javac.Main is not on the classpath错误
【发布时间】:2015-04-16 08:06:48
【问题描述】:

我正在尝试运行 java 应用程序,但出现以下错误,

找不到 javac 编译器; com.sun.tools.javac.Main 未打开 类路径。可能JAVA_HOME不指向JDK

我经历了很多 SO 问题,发现解决方案是 JAVA_HOME 应该指向 JDK,而不是 JRE

然后我尝试在命令提示符下打印 JAVA_HOME,

我已经从我的计算机->属性->环境变量->系统变量中设置了这个 JAVA_HOME,如下所示,

我还在 Eclipse 中使用首选项添加了新变量,

最后我仍然遇到同样的错误。 JAVA_HOME 有什么问题?

更新:

eclipse-preferences-installed jres 中只有一个条目是 jdk 并被选中,

而在project propertiesjava build path-libraries下面有JRE System Liberary [jdk1.8.0_31]被使用。

更新 1:

C:\Program Files\Java\jdk1.8.0_31 具有名为 jre 的文件夹。是 jre 文件夹导致了这个问题吗?我可以删除这个文件夹吗?有没有办法在项目中只添加 jdk 库?

【问题讨论】:

  • 请确认您是否在设置变量后启动了新控制台?如果它是一个新的控制台,而不是对我来说其他一切看起来干净和正确,我建议你卸载并重新安装 java ?有时会出现安装错误。使用 .msi 或 .exe 文件安装而不是复制粘贴文件夹。

标签: java eclipse classpath


【解决方案1】:

Eclipse 是一个 IDE,因此,它(至少)有两个 Java 版本:一个是它自己用来运行的 (JAVA_HOME),另一个是它用来运行你的应用程序的 JVM。两者不需要相同。

因此,要解决您的问题,您需要查看 Eclipse 的首选项,特别是 Installed JREs,它为您提供了 Eclipse 将用于从项目中运行 Java 代码的 Java VM 列表。我的猜测是那里会有几个条目,默认是 JRE 而不是 JDK。

确保列表中有 JDK,然后转到您的项目。在项目中,您可以在Java Build Path -> Libraries下选择使用哪个Java VM。

[编辑] 仔细查看最后一个屏幕截图:您已将 Eclipse 配置为使用 C:\Program Files\Java\jdk1.8.0_31\jre,这意味着您已将其指向 JDK 内部的 JRE。请改用C:\Program Files\Java\jdk1.8.0_31(末尾不带\jre)。

[EDIT 2] 如果删除jre 文件夹,Java 将停止工作。任何 JDK 还包含一个 JRE。 JRE 包含rt.jarString.class 等。 Java 编译器在 JDK 中的tools.jar 中。

如果在 Eclipse 中重新创建 JRE 条目没有帮助,您必须手动将其添加到类路径中。

您可以使用变量(“添加变量...”)来确保 Eclipse 在您切换到新的/不同的 JRE 时更新路径。试试JAVA_HOME,扩展名为lib/tools.jar

【讨论】:

  • 查看我的编辑;您已在 JDK 中选择了 JRE。
  • 好的。我在列表中缺少tools.jarC:\Program Files\Java\jdk1.8.0_31\lib\tools.jar中是否存在?
  • 是的tools.jar 存在于C:\Program Files\Java\jdk1.8.0_31\lib
  • 在这种情况下,Eclipse 不知何故感到困惑。删除首选项中的 JRE,然后使用路径 C:\Program Files\Java\jdk1.8.0_31 再次添加它。它应该从...\jre\lib 获取一些JAR(例如rt.jar,其中包含String.class),但它也应该列出...\lib\tools.jar
  • :-/ 我确信 Eclipse 会添加它。在这种情况下,手动将其添加到类路径中。您可以使用变量(“添加变量...”)来确保 Eclipse 在您切换到新的/不同的 JRE 时更新路径。试试JRE_LIB。如果需要,可以使用/../ 上一级:JRE_LIB/../../lib/tools.jar
【解决方案2】:
  1. 在Eclipse中点击运行->外部工具->外部工具配置
  2. 单击 JRE 选项卡
  3. 单击已安装的 JRE... 按钮
  4. 单击添加按钮(选择标准 VM,如果适用)
  5. 点击目录按钮
  6. 浏览到您安装的 Java 的 JDK 版本(不是 JRE)(例如:C:\Program Files\Java\jdk1.7.0_04)
  7. 点击完成。
  8. 重新运行 Ant 脚本 - 玩得开心!

【讨论】:

    【解决方案3】:

    我在命令提示符下使用 ant 时遇到了同样的问题,我发现的解决方案是您需要将 tools.jar 放在 bin 文件夹中,该文件夹位于 apache ant 文件夹中。

    例如:- D:\apache-ant-1.10.12-bin\lib

    你会在里面得到 tools.jar C:\Program Files\Java\jdk1.8.0_211\lib

    请根据您的java安装路径更改路径。

    【讨论】:

    • 这是个坏建议。您不需要将 tools.jar 文件的副本放入 Ant“lib”目录。正确的解决方法是确保 Ant 使用的 JAVA_HOME正确 指向 JDK 安装目录。在您的情况下,它应该设置为“C:\Program Files\Java\jdk1.8.0_211”。
    猜你喜欢
    • 2022-12-02
    • 1970-01-01
    • 2018-03-07
    • 1970-01-01
    • 2022-12-02
    • 2022-12-26
    • 2022-06-30
    • 2020-05-27
    • 2022-07-12
    相关资源
    最近更新 更多