Maven包编译错误

我在eclipse中使用maven创建了一个webapp项目。 当我在命令提示符下运行命令mvn package时,它显示了下面的错误。

[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: 4.310s [INFO] Finished at: Tue Mar 05 14:32:23 IST 2013 [INFO] Final Memory: 16M/218M [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project Compilation fa ilure [ERROR] ***No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?*** [ERROR] -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException 

我试图改变jdk和jre。 但没有工作。 它仍显示相同的错误

Windows 7 – 64位中 ,存在权限问题,导致安装程序无法将文件C:\Program Files\Java\jdk1.6.xx\lib\tools.jar到您的本地。 这个jar文件是maven-compiler-plugin版本3.x使用的,而不是通常的javac

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

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

  • 转到Window – > Preferences – > Java – >已安装的JRE
  • 选择您正在使用的JDK(C:\ Program Files \ Java \ jdk1.6.xx)
  • 按编辑查看包括tools.jar的jar列表,​​您可以将其添加为Add External JAR

然后通过以下步骤配置maven运行:

  • 运行 – >运行配置 – >填写名称,基本目录和目标。
  • 然后在同一窗口中移动到JRE选项卡并指向JDK \ jdk1.6.xx \

转到“运行时配置”并将JRE配置为JDK。

为运行时选择正确的JDK

或者如@PawanKumarBaranwal建议的那样,设置默认的JDK。 但要注意是否配置了多个JRE。

选择默认JRE

对我来说(32位Windows 7)的作用是将以下内容添加到路径环境变量中:

%JAVA_HOME%\ lib中;

尝试这个。 转到窗口 – >首选项 – > Java – >已安装的JRE。

双击JRE,它位于已安装的JRE中。

在JRE Home中提供JDK路径(例如, C:\Program Files\Java\jdk1.7.0_80\ ),并将JRE名称指定为JDK。 单击Finish,然后单击OK。

对我来说它有效。

在我的例子中,错误“在这种环境中没有提供编译器。也许你在JRE而不是JDK上运行”是由于JRE安装在与JDK下的默认位置不同的位置。

在64位Linux下运行,我在/opt/java安装了Oracle的64位JDK SE 1.6.0_45。 32位和64位JRE安装在/opt/java/jre32/opt/java/jre64 ,带有jre符号链接:(即ln -s jre64 jre ),所以jre -> ./jre64 (meaning / opt / jdk / jre was a symlink referencing / opt / jdk / jre64 was a symlink referencing

一旦我将jre64重命名为jre(即rm jre ; mv jre64 jre ; ln -s jre jre64 ),这个问题就消失了; 我能够使用maven(netbeans内部)构建。

Maven似乎正在查看JRE路径,说“jre64不是JDK内部默认JRE安装的正确名称,所以假设JDK不存在于../”),这会阻止它从解析包含tools.jar等的JDK lib目录的位置

尚未测试过,但如果JRE不在默认位置(或者可能不在%JAVA_HOME%\jre目录中),则在Windows下可能会发生同样的情况。 如果同时安装了JDK和JRE,则Oracle的安装程序希望将JRE安装在%JAVA_HOME%\jre6 ,而不是%JAVA_HOME%\jr e。 这可能是因为JDK卸载过程需要\jre目录; 如果JRE已安装在\jre目录中JDK的JRE之上,而不是安装在\jre 6上,卸载JRE后卸载JDK将失败,除非复制\ jre目录,卸载JRE,并且\jre副本将恢复为\jre

转到preferences>installed JRE>

然后单击add

选择C:\program files\java\

按下enter

它将搜索其他jre而不是jdk,然后选择未选择的内容

有几个选项可供指定。

步骤:项目资源管理器中的项目正确转到运行 – >运行配置 – >单击Maven构建 – >单击构建配置/或创建新配置。 您将在下面看到该窗口作为给定的快照,单击那里的JRE选项卡。

你看到你有3个选项1)工作区默认JRE 2)执行环境3)备用JRE 1)工作区默认JRE从顶部的’Window’菜单设置 – > Preferences – > Java – > Installed JREs – 你可以添加你的jdk 2)执行环境jdk可以在pom.xml中设置

    maven-compiler-plugin 3.1  true C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe   

3)备用JRE可用于从目录中选择jdk

转到Windows – >首选项 – > Java – >已安装的JRE

可能已经添加了jre 在此处输入图像描述

单击添加 – >标准VM – >下一步 – >目录

并在我的案例路径中浏览JDK是C:\Program Files\Java\jdk1.8.0_111

然后点击完成。

你会看到这样的窗口

在此处输入图像描述

选择JDK – > Apply – > Ok

你完成了。

以下面的方式设置路径

将jdk的路径保留在路径变量的第一位,以便忽略其他java路径。 编译错误将被解决。

我正在使用Eclipse(V3.3)的maven插件,并且正在努力解决这个错误一段时间。 我终于找到了与陈旧的java源链接的解决方案:它与JRE或JDK无关(我使用JRE 1.7)。

我在其他论坛上发现它是maven-compiler-plugin中的已知问题(V3.3和3.5.1的结果相同)。

所以,我只是手动重新编译过时的源并再次运行目标,这次没有任何问题。

要找出陈旧的来源,请使用-X(debug)选项运行目标并查找以…开头的条目

 [DEBUG] Stale source detected: 

指示java类文件(手动重新编译…)。

希望这可能很有用,因为maven编译器给出的消息让我向错误的方向搜索(与JRE,JDK,JAVA-HOME等一起玩)。