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