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。
或者如@PawanKumarBaranwal建议的那样,设置默认的JDK。 但要注意是否配置了多个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等一起玩)。