无法找到javac编译器com.sun.tools.javac.Main不在类路径错误上

我正在尝试运行java应用程序,我收到以下错误,

无法找到javac编译器; com.sun.tools.javac.Main不在类路径上。 也许JAVA_HOME并没有指向JDK

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

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

在此处输入图像描述

我从我的计算机 – > properties-> env变量 – >系统变量中设置了这个JAVA_HOME,如下所示,

在此处输入图像描述

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

在此处输入图像描述

最后我仍然得到同样的错误。 JAVA_HOME怎么了?

更新:

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

在此处输入图像描述

project properties java build pathlibrariesJRE System Liberary [jdk1.8.0_31]

在此处输入图像描述

更新1:

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

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 )。

[编辑2]如果删除jre文件夹,Java将停止工作。 任何JDK也包含JRE。 JRE包含带String.class rt.jar等。 Java编译器位于tools.jar中的tools.jar中。

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

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

  1. 在Eclipse中单击“运行” – >“外部工具” – >“外部工具配置”
  2. 单击JRE选项卡
  3. 单击“已安装的JRE …”按钮
  4. 单击添加按钮(选择标准VM,如果适用)
  5. 单击目录按钮
  6. 浏览到已安装Java的JDK版本(而不是JRE)(例如:C:\ Program Files \ Java \ jdk1.7.0_04)
  7. 单击完成。
  8. 重新运行Ant脚本 – 玩得开心!