我正在使用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?
27 回答
我遇到了同样的问题,我犯的错误是我只在路径var中添加了jre路径,而不是jdk路径 . 当jdk路径被添加到路径并构建maven项目时它的工作完美 . 谢谢所有
添加新的JRE定义(选择路径JDK),为我工作 .
http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-add_new_jre.htm
试试这个 .
在Eclipse IDE上,进入 Window > Preferences > Java > Installed JREs >并检查 installed JREs . 你应该有一个JDK条目 .
选择执行环境,如下所示 . 点击 OK
然后在项目上 Right-Click - > Maven - > Update Project
此外,您可能需要更改Maven JRE(请参阅@ jlars62答案),如下所示 . 转到运行 - >运行配置,选择我正在运行的Maven Build(从左侧面板) . 然后,我单击了JRE选项卡并选择了Workspace默认JRE选项
对我来说,这正是日食的主人所抱怨的
所以,我按
Edit
按钮并改变JDK文件夹的路径,然后清理项目,一切都开始工作对我来说,在我对pom.xml进行此更改之前没有任何工作:
其他说明
我可以看到m2e正在JRE中执行,而不是JDK . 我没有做任何改变,包括将其添加到eclipse.ini:
最后,我从来没有在JDK中执行m2e,但是明确地设置Java编译器(如上所述)就可以了 .
将
JAVA_HOME
环境变量设置为JDK根文件夹 - 如果运行命令行或maven(mvn
)则需要 .(搜索谷歌
JAVA_HOME
了解更多信息)在Java编译器部分的项目属性中,选择所需的JDK - 如果直接从eclipse运行
In my case it was solved by doing this:
转到“运行时配置”并将JRE配置为JDK .
我复制了答案以防万一由于某种原因被删除,但来源是here
当我试图在eclipse中进行maven构建时,我遇到了这个错误 .
对我来说,答案是
Run
- >Run Configurations
,选择我正在运行的Maven Build
(从左侧面板) . 然后,我单击了JRE
选项卡并选择了选项Workspace default JRE
可能已经添加了jre
并在我的案例路径中浏览JDK是
C:\Program Files\Java\jdk1.8.0_111
你会看到像这样的窗口
你完成了 .
如果jaipster的答案不起作用的另一种选择是去:
窗口>首选项> Java>已安装的JRE
然后编辑jre,使其指向jdk而不是jre(jre包编辑器中提交的jre home)
这对我有用 .
我尝试了以上所有,但仍然得到相同的错误消息 .
在我的例子中,实际的JRE在项目特定的构建路径中被错误地用作JRE系统库,这显然超越了这里讨论的所有其他设置 .
如果是这样,请尝试以下方法:
打开Java Build Path的项目特定库:右键单击"Project > Build Path > Configure Build Path..."并选择"Libraries" tab .
选择"JRE System Library"条目并按"Remove" .
点击"Add Library..." .
弹出一个向导 . 选择"JRE System Library"并按"Next >" .
现在选择正确的JDK(在我的情况下"Workspace default JRE",我使用JDK配置) .
点击"Finish"关闭向导 .
按"OK"关闭"Properties"对话框 .
我在尝试使用
mvn clean install
构建项目应用程序的jar文件时遇到了同样的问题,尽管应用程序在从Eclipse运行时工作正常 .问题确实太天真了,我没有设置 JAVA_HOME 环境变量 . 我所要做的就是将JAVA_HOME环境变量设置为JDK目录,确保它不是 "\bin" 而没有 semi-colon ";" .
我的理解如下:
该应用程序在Eclipse中运行良好,因为JRE系统库引用了JDK文件夹中的JRE而不是没有JDK的外部JRE文件夹 . [正如其他答案所解释的那样]
此配置不适用于我们在命令提示符下运行的maven命令 . 它仍然会查找JAVA_HOME变量来访问JRE系统库,当找不到它时,它会引用没有JDK的外部JRE文件夹 .
如果从
cmd
运行Maven
命令,请确保在运行命令之前设置jdk路径 . 就我而言,我创建了一个包含以下内容的.bat
文件:有几个选项可供指定 .
步骤:项目资源管理器中的项目正确转到运行 - >运行配置 - >单击Maven构建 - >单击构建配置/或创建新配置 . 您将在下面看到窗口作为给定的快照,单击那里的JRE选项卡 .
您看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE
1)工作区默认JRE设置在顶部的'Window'菜单 - >首选项 - > Java - >已安装的JRE中 - 您可以添加您的jdk
2)执行环境jdk可以在@ksnortum提到的pom.xml中设置
3)备用JRE可用于从目录中选择jdk
我遇到了同样的问题,我只是将
JAVA_HOME
添加到 environment variables .如果你正在使用eclipse,请参考https://stackoverflow.com/a/21279068/6097074
如果您正在使用intellij,只需在项目目录中添加
JAVA_HOME
打开命令提示符并运行mvn clean install
(不要使用intellij终端) .对我来说,JRE位于JDK路径之前的PATH环境变量中
C:\ ProgramData \ Oracle \ Java \ javapath
C:\ env \ jdk1.8.0_151 \ bin
所以我删除了1.可能交换它们也会修复它 .
对于这个问题还有另一个可能的答案,我可能是唯一一个愚蠢地偶然发现这个问题的人,但我认为值得补充,因为我已经没有其他答案,因为我已经正确地设置了这些设置 .
安装JDK时,安装程序会询问您要安装文件的位置 . 默认情况下,在Windows上,这类似于C:\ Program Files \ Java \ jdk1.8.0_74(或您正在安装的任何版本) .
然后它会要求您提供一个安装JRE的目录,默认情况下是C:\ Program Files \ Java \ jre1.8.0_74 .
注意,一个是 jdk 1.8.0_74,另一个是 jre 1.8.0_74
我急于求成,并且认为安装程序两次问我同样的问题,将我的JDK和JRE安装位置设置为D:\ devtools \ jdk \ jdk1.8.0_74,导致安装程序用JRE覆盖JDK . 这导致(除其他外)我的JDK bin中缺少javac.exe,以及OP在我所有的maven构建中报告的相同错误 .
我有一个解决方案 .
这个问题最常见的解决方案是将 jdk location 更改为我的 Installed JREs 而不是 JRE location ,但这一次没有解决我的问题 .
所以我做了以下解决问题 . 展开 Installed JREs 选项卡,您将找到 Execution environments 选项卡 .
单击您喜欢的执行环境 . 就我而言,它是 JAVASE-1.8 . 它显示了2个选项 . JDK and JRE . 在那里选择 JDK ,问题就解决了 .
我只是浪费了3个小时来解决这个问题,直到我成功完成它 . 发出mvn编译命令时,我在Eclipse终端中遇到此错误:
No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
所以我在这里读到我必须创建一个名为JAVA_HOME的新系统变量,并使其指向jdk安装文件夹 . 但是这会产生另一个错误:
Source option 1.5 is no longer supported. Use 1.6 or later
无法找到这个修复...所以...
So the fix to make it all go away is install Java SE Development Kit 8! 我正在使用9认为如果它是最新的那么它必须更好......
无论如何...
从您的计算机上卸载所有Java版本
从这里安装JDK8:http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
然后定义JAVA_HOME系统环境值 - 这里的教程:https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/
重启Eclipse并享受! (至少那是我的所作所为)
希望这可以避免一些有点麻烦的流浪者 .
在我的情况下,我有系统变量路径有“C:\ ProgramData \ Oracle \ Java \ javapath”位置 .
在“C:\ ProgramData \ Oracle \ Java \ javapath”中的位置java,javaw只有那里 . 所以我得到了同样的错误 .
删除“C:\ ProgramData \ Oracle \ Java \ javapath”文件夹中的所有文件后,我的错误得到了解决 .
当我创建一个新的EC2 ubuntu 16.04实例并且已经安装了Java并且在运行mvn clean包时,我遇到了同样的错误,我遇到了这个问题,下面的解决方案对我有用 .
如果您正在使用Ubuntu服务器,然后你可以尝试再次安装Java,为此你可以使用这个答案How to install the JDK on Ubuntu Linux
我做了以下更改,它对我有用 . 希望它可以帮助某人 .
除了上面的回答之外,我可以说只是尝试从终端(Eclipse之外)运行Maven . 通过这种方式,如果它是从外部构建而不是在Eclipse中构建,那么您可以理解问题应该在Eclipse中 .
关于这个问题有几个答案,但都与JDK的正确路径配置有关,但只有JRE才能解决这个问题 .
我们只需要使用部署程序集来配置Java EE Project的打包war文件的路径,然后重新运行maven-install .
使用部署程序集的步骤:
右键单击Jave EE项目 - >单击属性 - >单击部署程序集
单击添加按钮 - >单击文件系统中的存档 - >单击下一步 - >单击添加 - >转到.m2 \ respository目录并搜索生成的war文件 - >选择战争文件 - >单击打开按钮 - >单击应用 - >确定
右键单击项目 - >单击“运行方式”下的“Maven安装”
这将成功构建您的项目,而不会出现任何编译器错误 .
希望这能解决没有JDK的问题 .
你错过了任何maven构建吗?
除了上面的JRE更改 . 我仍然遇到类似的问题 . 我添加它后工作正常,我缺少JUnit依赖 .
希望这会有所帮助 .
我的回答与Windows环境中的Eclipse有关 .
我去了Preferences - > Java - > Installed JREs我没有在这里看到JDK . 我这里只看到了JRE . 所以我添加了JDK,然后取消选中了JRE . 然后检查JDK . 然后我使用Run Configurations运行POM文件 . 选择选项卡JRE并选择“工作区默认...”选项以下是图像