我正在尝试运行java应用程序,我收到以下错误,
无法找到javac编译器; com.sun.tools.javac.Main未开启 类路径。也许JAVA_HOME没有指向JDK
我经历了很多SO问题,发现解决方案是 JAVA_HOME应该指向JDK,而不是JRE 。
然后我尝试在命令提示符下打印JAVA_HOME,
我已经从我的计算机设置了这个JAVA_HOME-> properties-> env变量 - >系统变量如下,
我还在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?
答案 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.jar
和String.class
等。 Java编译器位于tools.jar
中,位于JDK中。
如果在Eclipse中重新创建JRE条目没有帮助,那么您必须手动将其添加到类路径中。
您可以使用变量(&#34;添加变量...&#34;)来确保Eclipse在您切换到新的/不同的JRE时更新路径。尝试使用扩展名JAVA_HOME
lib/tools.jar
答案 1 :(得分:3)