在此环境中不提供编译器。也许您是在JRE而不是JDK上运行?


633

我正在使用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?

1
您如何开始编译?命令行?Eclipse工具?
Joeri Hendrickx

从eclipse工具运行配置->目标:
全新


7
嘿,此错误即将到来,因为Maven试图获取JDK,但在Eclipse中它指向JRE。您可以更改JDK的路径,它将起作用。检查后下,这将有助于你learn-automation.com/...
穆克什otwani

我正在发布此链接,以便将来有人可以像我一样从中受益。stackoverflow.com/a/33873838/4525120
神说

Answers:


982
  1. 在Eclipse IDE上,进入窗口 > 首选项 > Java > 已安装的JRE >并检查已安装的JRE。您应该在那里有一个JDK条目。
  2. 选择执行环境,如下所示。点击确定
  3. 然后右键单击您的项目-> Maven- > 更新项目

此外,您可能必须更改Maven JRE(请参阅@ jlars62答案),如下所示。转到运行->运行配置,选择我正在运行的Maven Build(从左侧面板)。然后,我单击“ JRE”选项卡,然后选择“工作区默认JRE”选项

在此处输入图片说明


15
@jaipster我尝试执行此操作,但是在左侧面板中找不到jdk,我只能看到jre7。你知道为什么吗?
diyoda_ 2014年

4
可能是您的计算机上未安装jdk7或未在Eclipse中配置它。你可否确认。
jaipster 2014年

52
@二极管我有同样的问题。我转到“已安装的JRE”并单击“添加...”,然后从那里浏览到C:\ Program Files \ Java \ jdk1.7.0_XX,然后可以按照Jaipster所述选择jre。
jlunavtgrad

7
对我来说,仅将JDK添加到“ Installed JRE”列表中(不是最好的命名...)并选中新JDK条目旁边的复选框,使其成为默认VM就足够了。
汤姆·芬克

7
我单击了“已安装的JRE”菜单中的“搜索”按钮。Eclipse搜索了我指向它的驱动器,并提供了所有已安装的JRE和JDK。
Mitra Boy

141

对我来说,这正是日食专家的抱怨

在此处输入图片说明

所以,我按下Edit按钮,将路径更改为“ JDK文件夹”,然后清理项目,一切开始工作


3
我宁愿建议使用“添加”按钮添加JRE,然后操纵JRE条目成为JDK条目!添加JDK之后,单击JDK条目旁边的复选框。这应该已经解决了本文中描述的问题。
汤姆·芬克

3
真奇怪 。因为如对话框标题所示,这应该放置Installed JREs而不是jdk文件夹。但这确实解决了我的问题。谢谢
Joe.wang

这很奇怪,标题是Installed JREs,但路径是JDK,但无论如何它都起作用
Abhijit Chakra

在添加JDK之后删除JRE是一个好主意。有时,无论如何,Eclipse都会继续使用JRE-不知道为什么会这样。使JDK成为唯一可用的选项会有所帮助。:)
leftbit

126
  1. JAVA_HOME环境变量设置为JDK根文件夹-如果运行命令行或maven(mvn),。
    • (在Google中搜索以JAVA_HOME获取更多信息)
  2. 在Java Compiler部分的项目属性中,选择所需的JDK-如果直接从eclipse运行

为什么需要步骤1?
邓肯·琼斯

2
@DuncanJones,如果您运行命令行或maven(此变量为google),则首先需要,其次-如果您直接从eclipse运行,则需要
msangel 2013年

1
我会将这些信息添加到您的答案中。否则,这表明在所有情况下两者都是必要的。
邓肯·琼斯

10
请注意,JAVA_HOME的结尾不是 “ bin”,而是指向JDK 的
koppor

发布插件需要此​​功能,因为它不使用eclipse的jre设置(使用外部maven安装)...
Rob

124

对我来说,在对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

最后,我从来没有让m2e在JDK中执行,但是显式设置Java编译器(如上所述)可以解决问题。


10
该解决方案应作为最后的手段实施,因为项目本身已被修改为与您当前的开发机器耦合。
Xtreme Biker,2016年

@ksnortum谢谢!这是使它对我有用的唯一原因。
安东尼·富恩特斯·阿塔维亚

那我们这里的Linux人员呢?
逻辑blob

我怀疑它几乎一样,除了可执行文件是/ path / to / java / bin / javac。也许尝试使用“哪个Java”来找到您的Java路径。
ksnortum

41

在我的情况下,可以通过执行以下操作解决此问题:

转到“运行时配置”,然后将JRE配置为JDK。

选择适合您的运行时的JDK

选择默认的JRE

我复制了答案,以防万一它由于某种原因而被删除,但是来源在这里


这对我有用。如果“备用JRE”下拉列表中未显示JDK,则需要添加“已安装的JRE”(导航到安装JDK的文件夹),然后选择“ JDK”文件夹。
Atul

这是我的问题,谢谢您的回答。
Amr Afifi

38

尝试从Eclipse中进行Maven构建时出现此错误。

对我来说,答案是Run-> Run Configurations,选择Maven Build我正在跑步(从左侧面板开始)。然后,我单击了JRE选项卡并选择了选项Workspace default JRE


1
除了上面选择的答案之外,这似乎是必要的检查。
nsandersen

1
我更喜欢此解决方案,因为它不会使您更改其他项目的默认Java版本。
Gonen I 2016年

30

转到Windows->首选项-> Java->已安装的JRE

可能是jre已添加 在此处输入图片说明

单击添加->标准VM->下一步->目录

并在我的案例路径中浏览JDK C:\Program Files\Java\jdk1.8.0_111

然后点击完成。

你会看到这样的窗口在此处输入图片说明

选择JDK-> Apply-> Ok

并且您完成了。


1
感谢您分享JDK路径。当我从一开始只显示JRE时,似乎人们可以选择另一个选项来单击JDK。我从您提供的路径中添加了JDK。
In-young Choung,

19

我遇到同样的问题,我只添加JAVA_HOME环境变量

环境变量

  • 如果您使用的是eclipse,请参考 https://stackoverflow.com/a/21279068/6097074
  • 如果您使用的是intellij,则只需在JAVA_HOME项目目录中添加打开命令提示符并运行mvn clean install(不要使用intellij终端)即可。

14

我尝试了以上所有方法,但是仍然收到相同的错误消息。

以我为例,实际的JRE在项目特定的构建路径中被错误地用作JRE系统库,这显然会覆盖此处讨论的所有其他设置。

如果是这样,请尝试以下操作:

  1. 打开Java Build Path的项目特定的库:右键单击“项目>构建路径>配置构建路径...”,然后选择“库”选项卡。
  2. 选择“ JRE系统库”条目,然后单击“删除”。
  3. 点击“添加库...”。
  4. 向导弹出。选择“ JRE系统库”,然后单击“下一步>”。
  5. 现在选择正确的JDK(在我的案例中为“工作区默认JRE”,我使用JDK配置了它)。
  6. 点击“完成”关闭向导。
  7. 点击“确定”,关闭“属性”对话框。

1
我已经尝试了@ishu提到的所有上述选项,但仍收到org.apache.maven.lifecycle.LifecycleExecutionException:无法执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(默认编译)在项目hibernateTest1上:编译失败,然后我尝试了您的解决方案,但没有错误更改...请帮助我。
Namrata Choudhary

添加<build> <sourceDirectory>flockWebclient</sourceDirectory> <resources> <resource> <directory>resources</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>您的pom.xml
Alekya,

11

如果jaipster的答案不起作用的另一种选择是转到:
窗口>首选项> Java>已安装的JRE

然后编辑jre,使其指向jdk而不是jre(在jre软件包编辑器中归档的jre主页)

那对我有用。


对我来说就是那样。有趣的是,有时我会收到错误,默认JRE错误地指向了JDK。
Salsero69 '16

为我工作,我想进行maven
全新

10

如果您从运行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"

8

在尝试使用以下方式构建项目应用程序的jar文件时,我遇到了相同的问题 mvn clean install,尽管该应用程序在Eclipse中运行时运行良好。

这个问题确实太天真了,因为我没有设置JAVA_HOME环境变量。我要做的只是将JAVA_HOME环境变量设置为JDK目录,确保它不直到“ \ bin”并且没有分号“;”。

在此处输入图片说明

我的理解是:

该应用程序在Eclipse中运行良好,因为JRE系统库引用了内部的 JRE JDK文件夹的而不是不带JDK的外部JRE文件夹。[正如其他答案很好解释的]

此配置不适用于我们在命令提示符下运行的maven命令。它仍然会寻找JAVA_HOME变量来访问JRE系统库,当找不到它时,它指向的是没有JDK的外部JRE文件夹。


6

有几个选项可以指定。

步骤:在项目资源管理器中的项目上,转到运行->运行配置->单击Maven构建->单击构建配置/或创建一个新配置。您将在下面看到该窗口作为给定的快照,单击那里的JRE选项卡。

您看到有3个选项1)工作区默认JRE 2)执行环境3)备用JRE 在此处输入图片说明 1)工作区默认JRE是从顶部的“窗口”菜单中设置的->首选项-> Java->已安装的JRE-在这里您可以添加您的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可用于从目录中选择一个jdk


5

对我而言,JRE位于JDK路径之前的PATH环境变量中

  1. C:\ ProgramData \ Oracle \ Java \ javapath
  2. C:\ env \ jdk1.8.0_151 \ bin

因此,我删除了1.交换它们也可能会解决。


5

我的答案与Windows环境中的Eclipse有关。

我去了Preferences-> Java->已安装的JRE,在这里没有看到JDK。我只在这里看到了JRE。因此,我添加了JDK,然后取消选中了JRE。然后检查了JDK。然后,我使用“运行配置”运行了POM文件。选择选项卡JRE并选择选项“ Workspace Default ...”。这是图像

在此处输入图片说明

在此处输入图片说明


5

问题陈述 =在此环境中未提供编译器。也许您是在JRE而不是JDK上运行?智慧

请按如下所示设置环境变量以解决该问题

变量名称:JAVA_HOME

变量值:C:\ Program Files \ Java \ jdk1.8.0_202

变量名称:M2_HOME

变量值:C:\ Program Files \ apache-maven-3.6.0

此外,在“ 系统变量 ”中添加Java和maven路径,如下所示:

  1. C:\ Program Files \ Java \ jdk1.8.0_202 \ bin

  2. C:\ Program Files \ apache-maven-3.6.0 \ bin


3

这个问题还有另一个可能的答案,我可能是唯一一个愚蠢到无意中发现这个问题的人,但是我认为值得补充,因为没有其他答案适用,因为我已经正确设置了这些设置。

当您安装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,并且在我的所有Maven构建中,OP都在此处报告了相同的错误。


3

我有解决办法。

解决此问题的最常见方法是将jdk位置更改为我已安装的JRE,而不是JRE位置但这一次并没有解决我的问题。

所以我做了下面的事情来解决这个问题。展开“ 已安装的JRE”选项卡,您将找到“ 执行环境”选项卡。

单击您喜欢的执行环境。在我的情况下是JAVASE-1.8。那里显示2个选项。JDK和JRE。选择那里的JDK,问题就解决了。

在此处输入图片说明


2

我只是在这个问题上浪费了3个小时,直到我设法使它起作用。发出mvn compile命令时,我在Eclipse Terminal中遇到此错误:

在此环境中不提供编译器。也许您是在JRE而不是JDK上运行?

因此,我在这里读到我必须创建一个名为JAVA_HOME的新系统变量,并将其指向jdk安装文件夹。但是,这产生了另一个错误:

源选项1.5不再受支持。使用1.6或更高版本

找不到此解决方案,所以...

因此,使这一切消失的解决方法是安装Java SE Development Kit 8! 我当时用9来思考,如果它是最新的,那一定会更好...

无论如何...

  1. 从计算机上卸载所有Java版本
  2. 从此处安装JDK8:http : //www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. 然后定义JAVA_HOME系统环境值-此处的教程:https//docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. 重新启动Eclipse并享受它!(至少那是我所做的)

希望这可以免除一些可怜的流浪者的麻烦。


2

就我而言,我的系统变量路径具有“ C:\ ProgramData \ Oracle \ Java \ javapath”位置。

在“ C:\ ProgramData \ Oracle \ Java \ javapath”位置的java中,javaw仅存在。所以我得到同样的错误。

删除“ C:\ ProgramData \ Oracle \ Java \ javapath”文件夹中的所有文件后,我的错误已解决。



2

虽然问题是关于Eclipse安装程序的错误,但在这里用IntelliJWindows 10安装程序解决此错误的答案可能也很有帮助。

1。转到File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven->Importing

2。设置JDKImporter如下所示JAVA_HOME

在此处输入图片说明

JAVA_HOME应设置JDK在环境变量路径- >系统变量并添加%JAVA_HOME%\bin到路径系统变量


1

我遇到了同样的问题,我犯的错误是我只在路径var中添加了jre path,而不是jdk path。当将jdk path添加到path并构建其maven项目时,它的工作非常完美。谢谢大家



1

尝试这个。

<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>



1

在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可见:

转到窗口->首选项-> Java->已安装的JRE选择要使用的JDK(C:\ Program Files \ Java \ jdk1.6.xx)按Edit查看jar列表,​​包括tools.jar,或者将其添加为Add External JAR然后通过以下步骤配置maven:

运行->运行配置->填写名称,基本目录和目标。然后在同一窗口中,移至“ JRE”选项卡并指向“ JDK” \ jdk1.6.xx \


0

除了上面的回答,我可以说只是尝试从终端(Eclipse外部)运行Maven。这样,如果它是从外部构建的,而不是在Eclipse中构建的,则可以理解问题应该出在Eclipse中。


0

关于此问题,有几个答案,但都与JDK的正确路径配置有关,但是只有JRE才能解决此问题。

我们只需要利用部署程序集来配置Java EE Project打包的war文件的路径,然后重新运行maven-install。

利用部署程序集的步骤:

  1. 右键单击Jave EE项目->单击属性->单击部署程序集

  2. 单击添加按钮->单击文件系统中的存档->单击下一步->单击添加->转到.m2 \ respository目录并搜索生成的war文件->选择war文件->单击打开按钮->单击应用->确定

  3. 右键单击项目->单击“运行方式”下的Maven安装

这将成功构建您的项目,而不会出现任何编译器错误。

希望这可以在没有JDK的情况下解决问题。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.