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

时间:2015-04-16 08:06:48

标签: java eclipse classpath

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

  

无法找到javac编译器; com.sun.tools.javac.Main未开启   类路径。也许JAVA_HOME没有指向JDK

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

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

enter image description here

我已经从我的计算机设置了这个JAVA_HOME-> properties-> env变量 - >系统变量如下,

enter image description here

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

enter image description here

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

  

更新:

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

enter image description here

project properties java build path - libraries下,使用JRE System Liberary [jdk1.8.0_31]

enter image description here

  

更新1:

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

2 个答案:

答案 0 :(得分:11)

Eclipse是一个IDE,因此它有(至少)两个Java版本:它自己运行的版本(JAVA_HOME)和用于运行应用程序的JVM。这两个人不必相同。

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

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

<强> [编辑] 仔细查看最后一个屏幕截图:您已将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包含rt.jarString.class等。 Java编译器位于tools.jar中,位于JDK中。

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

您可以使用变量(&#34;添加变量...&#34;)来确保Eclipse在您切换到新的/不同的JRE时更新路径。尝试使用扩展名JAVA_HOME

lib/tools.jar

答案 1 :(得分:3)

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