我在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。但没有工作。仍然显示相同的错误
答案 0 :(得分:47)
在 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可以看到该文件:
然后通过以下步骤配置maven运行:
答案 1 :(得分:12)
答案 2 :(得分:3)
对我(32位Windows 7)有用的是将以下内容添加到路径环境变量中:
%JAVA_HOME%\ lib中;
答案 3 :(得分:3)
试试这个。转到窗口 - &gt;偏好 - &gt; Java - &gt;已安装的JRE。
双击JRE,它位于已安装的JRE中。
在JRE Home中提供JDK路径(例如,C:\Program Files\Java\jdk1.7.0_80\
),并将JRE名称指定为JDK。
单击Finish然后单击OK。
对我而言,它有效。
答案 4 :(得分:1)
在我的情况下,错误“在这种环境中没有提供编译器。也许你正在运行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
/选择/ JDK / jre64)。
一旦我将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的安装程序希望在%JAVA_HOME%\jre6
安装JRE,而不是%JAVA_HOME%\jr
e。这可能是因为JDK卸载过程需要\jre
目录;如果JRE已安装在\jre
目录中JDK的JRE之上,而不是\jre
6,则在卸载JRE后卸载JDK将失败,除非复制\ jre目录,JRE已卸载,\jre
副本将恢复为\jre
。
答案 5 :(得分:1)
转到preferences>installed JRE>
然后点击add
选择
C:\program files\java\
按enter
它将搜索其他jre而不是jdk,然后选择未选择的内容
答案 6 :(得分:1)
有几个选项需要指定。
步骤:项目资源管理器中的项目正确转到运行 - &gt;运行配置 - &gt;单击Maven Build - &gt;单击您的构建配置/或创建一个新配置。您将在下面看到窗口作为给定的快照,单击那里的JRE选项卡。
您会看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE 1)工作区默认JRE由&#39; Window&#39;设置。菜单位于顶部 - &gt;偏好 - &gt; Java - &gt;已安装的JRE - 您可以添加您的jdk 2)执行环境jdk可以在pom.xml中设置
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
3)备用JRE可用于从目录中选择jdk
答案 7 :(得分:1)
转到Windows - &gt;偏好 - &gt; Java - &gt;已安装的JRE
点击添加 - &gt;标准VM - &gt;下一步 - &gt;目录
并在我的案例路径中浏览JDK C:\Program Files\Java\jdk1.8.0_111
然后点击完成。
你会看到这样的窗口
选择JDK - &gt;申请 - &gt;确定
你已经完成了。
答案 8 :(得分:0)
将jdk的路径保留在路径变量的第一位,以便忽略其他java路径。编译错误将被解决。
答案 9 :(得分:0)
创建了第二个工作空间以在单独的源代码分支中工作之后,我遇到了一个奇怪的情况,我可以在新工作空间中通过命令行进行Maven构建,但不能在Eclipse中进行。我尝试按照其他人的描述将JRE配置设置为JDK,但还是没有运气。最后,我不得不搜索新工作区的.metadata目录的全部内容,以找到拒绝重新配置的有问题的文件。罪魁祸首是
.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs
尽管更改了配置,但它仍然指向错误的目录。我进行了手动编辑以提供正确的JDK名称和位置。我还编辑了
下的文件.plugins/org.eclipse.debug.core/.launches
这些同样都指向JRE而不是JDK。完成这些编辑后,我可以从Eclipse中而不是仅从命令行在第二个工作区中构建项目。
答案 10 :(得分:0)
检查您的安装JDK及其路径-download link
检查环境变量的路径-check
添加日食
windows->preferences->Java->installed JREs->add->standart VM -> JRE home (jdk path exmp:'C:\Program Files\Java\jdk1.8.0_221')
然后申请。
右键单击您的project -> properties -> select (Libraries -> JRE System libraries) -> edit -> choose workspace default JRE (JDK.1.8.0_221)
右键单击您的项目-> Maven更新 清理并再次安装项目。
答案 11 :(得分:-1)
我正在使用Eclipse(V3.3)的maven插件,并且正在努力解决这个错误一段时间。我终于找到了与陈旧的java源链接的解决方案:它与JRE或JDK无关(我使用JRE 1.7)。
我在其他论坛上发现它是maven-compiler-plugin中的已知问题(V3.3和3.5.1的结果相同)。
所以,我只是手动重新编译陈旧的源代码并再次运行目标,这次没有任何问题。
要找出陈旧的来源,请使用选项-X(调试)运行目标,并查找以
开头的条目[DEBUG] Stale source detected:
表示java类文件(手动重新编译...)。
希望这可能有用,因为maven编译器给出的消息让我向错误的方向搜索(使用JRE,JDK,JAVA-HOME等)。