我正在使用m2eclipse在Eclipse中编译一个项目。我在Eclipse中设置JDK路径,如下所示:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

但是这显示了一个错误

[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE    rather than a JDK?
[INFO] 1 error
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-   plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?

当前回答

在Windows 7 - 64位中,存在一个权限问题,阻止安装程序将文件C:\Program Files\Java\jdk1.6.xx\lib\tools.jar解压缩到您的本地。这个jar文件是maven-compiler-plugin版本3。而不是通常的javac

解决方案:以管理员身份运行Java JDK安装程序!并确保tools.jar位于C:\Program Files\Java\jdk1.6.xx\lib\

如果您正在使用m2e maven集成插件,您希望通过以下步骤在Eclipse中看到该文件对Eclipse可见:

进入“窗口->首选项-> Java ->安装的jre” 选择您正在使用的JDK (C:\Program Files\Java\jdk1.6.xx) 按Edit查看包括tools.jar在内的JAR列表,或者您可以将其添加为add External JAR 然后通过以下步骤配置maven:

执行->执行配置->填写“名称”、“基本目录”和“目标”。 然后在同一个窗口中移动到JRE选项卡并指向JDK \jdk1.6.xx\

其他回答

将JAVA_HOME环境变量设置为JDK根文件夹——如果您运行命令行或maven (mvn),则需要这样做。 (搜索谷歌JAVA_HOME获取更多信息) 在Java编译器部分的项目属性中选择所需的JDK -如果您直接从eclipse运行

在Linux中,做一个docker的例子,我一定没有安装JDK,只安装了JRE。sudo apt安装openjdk-8-jdk,在配置文件中设置JAVA_HOME,并将JAVA_HOME/bin添加到路径中,它就构建了!

如果jaipster的答案不起作用,另一个选择是: 窗口>首选项> Java >已安装的jre

然后编辑jre,使其指向jdk而不是jre (jre包编辑器中的jre home文件)。

这对我很管用。

我在尝试使用mvn clean install为我的项目应用程序构建jar文件时遇到了同样的问题,尽管应用程序在从Eclipse运行时工作得很好。

我没有设置JAVA_HOME环境变量,这确实太天真了。我所要做的就是将JAVA_HOME环境变量设置为JDK目录,确保它不是“\bin”,并且没有分号“;”。

我是这样理解的:

应用程序在Eclipse中运行良好,因为JRE系统库引用的是JDK文件夹中的JRE,而不是没有JDK的外部JRE文件夹。[在其他答案中解释得很好]

此配置不适用于我们在命令提示符上运行的maven命令。它仍然会寻找JAVA_HOME变量来访问JRE系统库,当没有找到它时,它会引用没有JDK的外部JRE文件夹。

我也遇到了同样的问题,我犯的错误是我只在路径var中添加了jre路径,而不是jdk路径。当jdk路径添加到路径并构建maven项目时,它的工作完美。谢谢