在这个环境中没有提供编译器。 也许你正在使用JRE而不是JDK?
我在使用m2eclipse在Eclipse中编译项目。 我在Eclipse中设置JDKpath,如下所示:
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?
- 在Eclipse IDE上,进入“ 窗口” > “首选项” >“ Java” >“ 已安装的JRE” >并检查已安装的JRE 。 你应该有一个JDK入口。
- 如下所示selectExecution Env。 点击OK
- 然后右键单击您的项目 – > Maven – > 更新项目
此外,您可能需要更改Maven JRE(请参阅@ jlars62答案),如下所示。 转到运行 – >运行configuration,select我正在运行的Maven Build(从左侧面板)。 然后,我单击JRE选项卡并select了工作区默认JRE选项
对我来说,这正是日食的抱怨
所以,我按下Edit
button,改变到JDK文件夹的path,然后清理项目,一切开始工作
对我来说,没有任何工作,直到我改变了我的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编译器(如上所述)的伎俩。
- 将JAVA_HOME设置为JDK根目录 – 如果您运行命令行或maven(对于此variables,则为google)
- 在Java Compiller部分的项目属性中,select所需的JDK – 如果直接从eclipse运行
我在eclipse中试图做一个maven构build时遇到了这个错误。
对我来说,答案是Run
– > Run Configurations
,select我正在运行的Maven Build
(从左侧面板)。 然后,我单击JRE
选项卡并select了Workspace default JRE
选项
在我的情况下,这是通过这样做来解决的:
转到“运行时configuration”并将JREconfiguration为JDK。
我复制了答案,以防万一它由于某种原因被删除,但源代码在这里
转到Windows – >首选项 – > Java – >已安装的JRE
可能已经被添加了
点击添加 – >标准虚拟机 – >下一步 – >目录
并在我的案例path浏览JDK是C:\Program Files\Java\jdk1.8.0_111
然后点击完成。
你会看到这样的窗口
selectJDK – >应用 – >确定
你完成了。
另外如果jaipster的答案不起作用是去:
窗口>首选项> Java>已安装的JRE
然后编辑jre,使其指向jdk而不是jre(在jre包编辑器中提交的jre home)
这对我有效。
如果从cmd
运行Maven
命令,请确保在运行该命令之前设置jdkpath。 在我的情况下,我创build了一个.bat
文件,其中包含以下内容:
set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60 start cmd.exe /k "cd c:\aem_proj\sis\aau"
我尝试了上述所有,但是,仍然得到相同的错误信息。
在我的情况下,实际的JRE被错误地用作特定于项目的构buildpath中的JRE系统库,这显然覆盖了这里讨论的所有其他设置。
如果是这样的话,请尝试以下方法:
- 打开Java Build Path的项目特定库:右键单击“Project> Build Path> Configure Build Path …”并select“Libraries”选项卡。
- select“JRE系统库”条目并点击“删除”。
- 点击“添加库…”。
- popup一个向导。 select“JRE系统库”,然后点击“下一步>”。
- 现在select正确的JDK(在我的情况下,“工作区默认JRE”,我使用JDKconfiguration)。
- 点击“完成”closures向导。
- 点击“确定”closures“属性”对话框。
这个问题还有另外一个可能的答案,我可能是唯一一个愚蠢的人,偶然发现了这个问题,但我认为值得补充,因为没有其他答案适用,因为我已经有了这些设置。
当您安装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中缺lessjavac.exe,以及在所有我的maven版本中报告的OP相同的错误。
有几个选项可以指定。
步骤:右键在项目浏览器中的项目转到运行 – >运行configuration – >点击Maven Build – >点击你的构buildconfiguration/或创build一个新的configuration。 你会看到下面给出的快照窗口,在那里点击JRE选项卡。
您看到您有3个选项1)工作空间默认JRE 2)执行环境3)替代JRE 1)工作区默认的JRE是从'窗口'菜单的顶部 – >首选项 – > Java – >已安装的JREs – 在这里你可以添加你的jdk 2)执行环境jdk可以在@ksnortum中提到的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>
3)备用JRE可以用来从你的目录中select一个jdk
我遇到了同样的问题,我犯的错误是我添加jrepath只在pathvar,而不是jdkpath。当jdkpath被添加到path,并build立maven项目的工作完美。感谢所有
添加新的JRE定义(selectpathJDK),为我工作。
我有一个解决scheme。
对于这个问题最常见的解决scheme是将jdk位置更改为已安装的JRE而不是JRE位置,但这一次并未解决我的问题。
所以我做了下面的解决这个问题。 展开已安装的JRE选项卡,您将find一个执行环境选项卡。
点击你最喜欢的执行环境。 在我的情况下,它是JAVASE-1.8 。 在那里显示2个选项。 JDK和JRE 。 在那里selectJDK ,问题就解决了。
我尝试使用mvn clean install
构build我的项目应用程序的jar文件时遇到了同样的问题,尽pipe应用程序在从Eclipse运行时工作正常。
这个问题确实太天真了,我没有设置JAVA_HOME环境variables。 我所要做的就是将JAVA_HOME环境variables设置为JDK目录,确保它不是直到“\ bin”而没有分号“;” 。
我如何理解它是:
在Eclipse中,应用程序工作正常,因为JRE系统库在JDK文件夹内引用JRE,而不是在没有JDK的情况下使用外部JRE文件夹。 [正如其他答案中所解释的那样]
这个configuration不适用于我们在命令提示符下运行的maven命令。 它仍然会查找JAVA_HOMEvariables来访问JRE系统库,如果没有find,它会引用没有JDK的外部JRE文件夹。
我做了以下改变,它为我工作,希望它有助于某人。
除了上面的回答,我可以说只是尝试从terminal(在Eclipse之外)运行Maven。 通过这种方式,如果它是从外部构build而不是在Eclipse中构build的,则可以理解问题应该在Eclipse中。
尝试这个。
<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>
关于这个问题有几个答案,但都与JDK的正确pathconfiguration有关,但是只有JRE,我们才能解决这个问题。
我们只需要使用部署程序集来configurationJava EE项目的打包war文件的path,然后重新运行maven-install。
使用部署程序集的步骤:
-
右键单击Jave EE项目 – >单击属性 – >单击部署程序集
-
点击添加button – >从文件系统中点击档案 – >点击下一步 – >点击添加 – >转到.m2 \ respository目录并search生成的war文件 – >selectwar文件 – >点击打开button – >点击应用 – >确定
-
右键单击该项目 – >单击运行方式下的Maven安装
这将成功地build立你的项目,没有任何编译器错误。
希望这可以解决没有JDK的问题。
你是否缺less任何的Maven构build。
除了上面的JRE changes.I仍然面临类似的问题。我失去了JUnit依赖项后,添加它工作正常。
希望这会有所帮助。