我正在使用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?
我有同样的问题,我只是将JAVA_HOME
添加到环境变量。
JAVA_HOME
打开命令提示符并运行mvn clean install
(不要使用intellij终端)。如果从Maven
运行cmd
命令,请确保在运行命令之前设置jdk路径。在我的例子中,我创建了一个包含以下内容的.bat
文件:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"
我在尝试使用mvn clean install
构建项目应用程序的jar文件时面临同样的问题,尽管应用程序在从Eclipse运行时工作正常。
问题确实太天真了,我没有设置JAVA_HOME环境变量。我所要做的就是将JAVA_HOME环境变量设置为JDK目录,确保它不是“\ bin”并且没有分号“;”。
我的理解如下:
该应用程序在Eclipse中运行良好,因为JRE系统库引用了JDK文件夹中的JRE而不是没有JDK的外部JRE文件夹。 [正如其他答案所解释的那样]
此配置不适用于我们在命令提示符下运行的maven命令。它仍然会查找JAVA_HOME变量来访问JRE系统库,当找不到它时,它会引用没有JDK的外部JRE文件夹。
有几个选项可供指定。
步骤:项目资源管理器中的项目正确转到运行 - >运行配置 - >单击Maven构建 - >单击构建配置/或创建新配置。您将在下面看到窗口作为给定的快照,单击那里的JRE选项卡。
你看到你有3个选项1)工作区默认JRE 2)执行环境3)备用JRE 1)工作区默认JRE从顶部的'Window'菜单设置 - > Preferences - > Java - > Installed JREs - 你可以添加你的jdk 2)执行环境jdk可以在pom.xml中设置,如@ksnortum所述
<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>
</plugins>
3)备用JRE可用于从目录中选择jdk
对我来说,JRE位于JDK路径之前的PATH环境变量中
所以我删除了1.可能交换它们也会修复它。
对于这个问题还有另一种可能的答案,我可能是唯一一个愚蠢地偶然发现这个问题的人,但我认为这是值得补充的,因为没有其他答案适用,因为我已经有了正确的设置。
安装JDK时,安装程序会询问您要安装文件的位置。默认情况下,在Windows上,这类似于C:\ Program Files \ Java \ jdk1.8.0_74(或您正在安装的任何版本)。
然后它会要求您提供一个安装JRE的目录,默认情况下是C:\ Program Files \ Java \ jre1.8.0_74。
注意,一个是jdk1.8.0_74,另一个是jre1.8.0_74
我急于求成,并且认为安装程序两次问我同样的问题,将我的JDK和JRE安装位置设置为D:\ devtools \ jdk \ jdk1.8.0_74,导致安装程序用JRE覆盖JDK。这导致(除其他外)我的JDK bin中缺少javac.exe,以及OP在我所有的maven构建中报告的相同错误。
我只是浪费了3个小时来解决这个问题,直到我成功完成它。发出mvn编译命令时,Eclipse终端中出现此错误:
此环境中未提供编译器。也许您运行的是JRE而不是JDK?
所以我在这里读到我必须创建一个名为JAVA_HOME的新系统变量,并使其指向jdk安装文件夹。但是这会产生另一个错误:
不再支持源选项1.5。使用1.6或更高版本
无法找到这个修复...所以...
因此,安装Java SE Development Kit 8的解决方案就是让它全部消失!我正在使用9认为如果它是最新的那就必须更好......
无论如何...
希望这可以避免一些有点麻烦的流浪者。
在我的情况下,我有系统变量路径有“C:\ ProgramData \ Oracle \ Java \ javapath”位置。
在“C:\ ProgramData \ Oracle \ Java \ javapath”中的位置java,javaw只有那里。所以我得到了同样的错误。
删除“C:\ ProgramData \ Oracle \ Java \ javapath”文件夹中的所有文件后,我的错误得到了解决。
对我来说,这正是日食的主人所抱怨的
所以,我按下Edit
按钮并改变JDK文件夹的路径,然后清理项目,一切都开始工作
我遇到了同样的问题,我犯的错误是我只在路径var中添加了jre路径,而不是jdk路径。当jdk路径被添加到路径并构建maven项目时它的工作完美。谢谢所有
试试这个。
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable> path to jdk \bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
</build>
当我创建一个新的EC2 ubuntu 16.04实例并且已经安装了Java并且在运行mvn clean包时,我遇到了同样的错误,我遇到了这个问题,下面的解决方案对我有用。
如果您正在使用Ubuntu服务器,那么您可以尝试再次安装Java,为此您可以使用此答案How to install the JDK on Ubuntu Linux
问题陈述=此环境中未提供编译器。也许您运行的是JRE而不是JDK?的IntelliJ
解
请设置如下的环境变量来解决问题
变量名称:JAVA_HOME
变量值:C:\ Program Files \ Java \ jdk1.8.0_202
变量名称:M2_HOME
变量值:C:\ Program Files \ apache-maven-3.6.0
此外,在“系统变量”中添加Java和maven路径,如下所示:
除了上面的回答之外,我可以说只是尝试从终端(Eclipse之外)运行Maven。通过这种方式,如果它是从外部构建而不是在Eclipse中构建,那么您可以理解问题应该在Eclipse中。
关于这个问题有几个答案,但都与JDK的正确路径配置有关,但只有JRE才能解决这个问题。
我们只需要使用部署程序集来配置Java EE Project的打包war文件的路径,然后重新运行maven-install。
使用部署程序集的步骤:
这将成功构建您的项目,而不会出现任何编译器错误。
希望这能解决没有JDK的问题。
你错过了任何maven构建吗?
除了上面的JRE更改。我仍然遇到类似的问题。我添加它后工作正常,我缺少JUnit依赖。
希望这会有所帮助。
我去了Preferences - > Java - > Installed JREs我没有在这里看到JDK。我这里只看到了JRE。所以我添加了JDK。
在这里我们必须强制删除JRE而不是仅仅取消选中。
对我来说,在我对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>
</plugins>
</build>
其他说明
我可以看到m2e正在JRE中执行,而不是JDK。我没有做任何改变,包括将其添加到eclipse.ini:
-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
最后,我从来没有在JDK中执行m2e,但是明确地设置Java编译器(如上所述)就可以了。
我尝试了大部分答案而没有成功。对我有用的是(在跟随https://stackoverflow.com/a/21279068/2408893之后):
JAVA_HOME
环境变量设置为JDK根文件夹 - 如果运行命令行或maven(mvn
)则需要。
(搜索谷歌JAVA_HOME
了解更多信息)当我试图在eclipse中进行maven构建时,我遇到了这个错误。
对我来说,答案是去Run
- > Run Configurations
,选择我正在运行的Maven Build
(从左侧面板)。然后,我点击了JRE
标签并选择了Workspace default JRE
选项
我尝试了以上所有,但仍然得到相同的错误消息。
在我的例子中,实际的JRE在项目特定的构建路径中被错误地用作JRE系统库,这显然超越了这里讨论的所有其他设置。
如果是这样,请尝试以下方法:
如果jaipster的答案不起作用的另一种选择是去: 窗口>首选项> Java>已安装的JRE
然后编辑jre,使其指向jdk而不是jre(jre包编辑器中的jre home)
这对我有用。