Eclipse / Maven错误:“此环境中未提供编译器”


77

我是Java企业开发领域的新手。我组织的Java专家正在无休假中休假,并且已经分配了维护他开发的某些Java应用程序的任务。他离开之前,在我的计算机上用Maven设置了Eclipse [Kepler SR1],并且看来工作正常。

现在,我准备部署我的第一个修改并需要运行Maven install,但是我无法使其正常工作-我在控制台上获得以下输出:

[错误]无法在项目mrpapp上执行目标org.apache.maven.plugins:maven-compiler-plugin:3.1:compile(默认编译):编译失败
[ERROR]在此环境中未提供编译器。也许您是在JRE而不是JDK上运行?

但我肯定运行JDK,而不是JRE。我仔细检查了我的$JAVA_HOMEC:\Program Files (x86)\Java\jdk1.7.0_60),它的目录中确实有一个。javac.exebin

我附上我的pom.xml文件副本供您审核。我确定其中存在导致问题的原因,但是我不确定可能是什么原因。我使用的是Windows 7 64位笔记本电脑,如果您需要其他平台/环境信息,我也可以提供。

任何帮助将不胜感激。


当您单击Window-> Preferences-> Java-> Compiler时,在Eclipse中怎么说?如果不是这样,您还可以检查eclipse.ini文件,以确保它没有指向java jre安装。
罗伯特·贝尔特兰2014年

5
假设是Eclipse构建失败,您是否尝试过mvn install直接从命令行运行Maven命令(例如)?其中这两个问题也可以帮助:stackoverflow.com/questions/19655184/...stackoverflow.com/questions/15220392/...
andersschuller

1
打开命令窗口并键入javac -v它是否起作用?
亨利

发现哪个Java实际上正在运行您的构建比应该的要复杂得多。尝试运行mvn help:system并验证环境设置和“系统属性”是否符合您的期望。
2014年

2
@andersschuller有一个很好的观点-这是从命令行还是从Eclipse失败?
2014年

Answers:


157

转到窗口→首选项→Java→已安装的JRE。

并查看是否有指向您的JDK路径的条目,如果没有,请单击“编辑”按钮,然后将路径配置为您的JAVA_HOME环境。


4
谢谢你们俩!我去了Window-> Preferences-> Java-> InstalledJREs,发现默认路径下列出了另一个路径。我删除了那个,当我尝试进行Maven安装时,它运行无误。问题解决了!
肯L

2
为我工作。甚至给出了(程序文件(x86)的)jre8位置。我将其更改为jre7..worked。
Anil Bhaskar,2015年

它对我有用,但是真的很奇怪..!有人找到了另一个可能的解决方法吗?
Dwhitz

@Dhn你什么意思,这很奇怪?如果您在谈论错误本身,那根本就不奇怪。Maven的目标之一是编译Java代码,因此它需要JDK而不是JRE。
豪尔赫·坎波斯

这很奇怪,因为eclipse希望将jdk作为jre ..,而且我还有很多其他错误,因为我已经用intellij导入了相同的项目,并且立即显示出诸如“ invalid jre”之类的错误。此外,许多其他conf和lib也因错误的jre而未被识别
。.– Dwhitz

22

Screen_shot 将'tools.jar'添加到已安装的JRE。

  1. Eclipse- > window- > preference
  2. 选择installed JREs->Edit
  3. 添加外部罐子
  4. tools.jarjava/JDKx.x/lib文件夹中选择。
  5. 点击完成

这是解决方案。添加tools.jar为我解决了这个问题。
zygimantus

1
我在jdk-10.0.1中找不到tools.jar。
digitig


12

我尝试了所有的东西;对我有用的是:

  1. 右键单击Eclipse项目,然后导航到属性。
  2. 单击Java Build Path并转到Libraries选项卡。
  3. 检查在其中添加了哪个Java版本;是JRE还是JDK?
  4. 如果您正在使用Maven项目并想要构建解决方案。
  5. 选择添加了其的JRE,然后单击remove。
  6. 单击添加外部类文件夹,然后通过从系统中进行选择来添加JDK安装。
  7. 单击应用,然后单击确定。
  8. 重新启动Eclipse。
  9. 构建成功。

对 !它为我工作,在我使用JDK首选配置Eclipse并重新构建项目后,仍然会出现此问题。并且上述解决方案有效。
Badr DRAIFI 2015年

8

在pom.xml中添加此配置

<project ...>
    ...
    <build>
        ...
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>

4

这对我有用。1.单击窗口->首选项->已安装的JRE。2.如下图所示,检查您引用的JDK是否适用于JDK。 在此处输入图片说明

如果没有,请单击添加->标准VM->通过选择目录来提供JDK路径,然后单击完成,如图所示。 在此处输入图片说明

  1. 最后一步,单击已安装的JRE->执行环境->选择您的JDE,如下图所示。 在此处输入图片说明

  2. Maven->清洁


3

使用Jdk1.8_92时,我也遇到类似的错误。对我来说,我发现jdk文件夹中缺少tools.jar。由于我在控制台中运行,因此无法尝试其他人建议的eclipse选项。

我安装了jdk-8u92-windows-x64。在尝试所有选项后,我发现jdk1.8.0_92 / lib文件夹中缺少tools.jar。我从旧版Java复制了tools.jar。然后就可以编译了。


2

请检查pom.xml的元素中是否包含以下条目,尤其是jdk.version,因为切换到已安装的jre并不能解决类似的错误。

<properties>
    <jdk.version>1.7</jdk.version>
    <spring.version>4.1.1.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <junit.version>4.11</junit.version>
</properties>

2

如果有人在Ubuntu中运行Eclipse并遇到此问题,请按照以下步骤找到答案:

  1. Eclipse->窗口->首选项。
  2. 选择已安装的JRE-> Add
  3. 选择standardVM。
  4. JRE主页:按[Directory ..]按钮。
  5. 选择您的java(我的问题是我的eclipse运行于java8,而我的VM运行于java7),在我的情况下,java8安装在usr / local / jvm / java-8-oracle中。
  6. 按完成。
  7. 然后按已安装的JRES箭头,以便可以看到其他选项。
  8. 转到执行环境。
  9. 选择左侧和右侧的JavaSE-1.6(兼容的JRE),您必须选择刚安装的Java(在我的情况下为Java-8-oracle)。您必须使用JavaSE1.8执行此步骤。
  10. 单击确定,然后重新启动Eclipse。

2

在安装了JDK 8和JRE 8的Windows 10上,尝试在新安装的Eclipse Neon(针对JEE开发人员)安装中的Eclipse中执行Maven构建时,遇到了相同的错误。

我曾尝试将tools.jar指定为外部库,并在eclipse中将jdk设置为-vm。这些东西都不起作用。

如上所述,选择JDK作为默认执行环境可以解决问题。

  1. Eclipse->窗口->首选项-> java->已安装的JRE->执行环境。
  2. 选择JavaSE-1.8
  3. 在“兼容的JRE”中检查JDK1.8。

在步骤3中,兼容JRE列表框上方的文本显示“可以通过选中默认JRE来指定它”

注意:我也有Maven编译器插件在pom中明确列出了1.8

    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>



1

就我而言,我已经创建了一个运行配置,每当我尝试运行它时,都会显示该错误。在某些网站上搜索后,我编辑了运行配置,并在“ JRE”选项卡下,选择了运行时JRE作为“工作区默认JRE”,我已将其配置为指向本地Java JDK安装(例如C:\ Program Files(x86)) \ Java \ jdk1.8.0_51)。这解决了我的问题。也许它可以帮助某个人。


1

遇到相同的问题,使用以下命令将Java指向eclipse中的bin文件夹:Windows>首选项> Java>已安装的JRE>删除任何现有的JRE并将其指向您的Java bin文件夹(主要在C:\ Program Files \ Java \ jdk1.8下.x_xx)。

然后运行maven install它应该可以工作。


1

要检查您的Maven使用什么,请打开命令行并键入:

mvn –version

验证JAVA_HOME引用的是JDK主页,而不是JRE

在Windows上:

转到系统属性->高级系统设置->高级->环境变量,然后在“系统变量”部分中选择JAVA_HOME变量,然后单击“编辑”。使用以下变量名填充表单:JAVA_HOME变量值:

在Unix上:

export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK>

看到这个链接


1

在运行时mvn compile,控制台出现以下错误:

[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1087 source files to C:\Code\DevVNextComplete\Development_vNext\Source\JARS\target\classes
[INFO] -------------------------------------------------------------
[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

[解析度]

我在环境变量中添加了JAVA_HOME变量,然后它起作用了。

在此处输入图片说明


0
  1. 从系统上卸载较旧的Java(JDK / JRE)(保留一个(最新)Java版本),如果环境变量PATH / CLASSPATH中有任何旧的Java jre / jdk条目,则还要删除
  2. Eclipse-> Window-> Preferences->已安装的JRE->从最新安装中添加/编辑JDK
  3. Eclipse->窗口->首选项->已安装的JRE->执行环境->在左侧选择所需的Java版本,然后单击右侧的复选框
  4. 如果您使用的是maven,请在plugins标记内的pom.xml(根据需要更新版本)中包含以下标记。

    <plugin>  
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    
  5. 右键单击Eclipse项目Maven->更新项目

0

对我来说(在Windows 10上),我在运行时在Windows命令提示符下收到错误“此环境中未提供编译器” mvn install。该修复程序正在更改JAVA_HOME环境变量为指向我的jdk(C:\ Program Files \ Java \ jdk1.8.0_101);以前它已经指向了jre。

而让Eclipse中使用新的JDK,我编辑eclipse.ini我的Eclipse发行,改变了线-vmC:\Program Files\Java\jdk1.8.0_101\bin


0

在pom.xml中检查Java版本,在Eclipse-> Window-> Preferences-> Installed JRE中检查jre版本。在我的情况下,pom.xml具有不同的版本(eclipse使用1.7时为1.8)。将pom.xml中的版本修复为1.7可行。


0

如果您在命令窗口中的eclipse之外工作,请在命令窗口中
输入以下命令,以确保您具有正确的JAVA_HOME且该目录包含编译器:

dir %JAVA_HOME%\bin\javac.*

0

1.转到Windows->首选项-> Java->已安装的JRE->执行环境

2.在“执行环境”框中选择当前使用的Java版本。这样,在“兼容JRE”框中,您将看到“ jre1.8.0_102 [perfect match] ”(如果您的Java版本为1.8)。然后尝试使用Maven进行构建。



0

%JAVA_HOME%通过输入echo %JAVA_HOME%命令提示符来确保已设置。如果没有设置,则需要将Java路径添加到Window的环境变量中。


-1

我遇到了Eclipse Neon的问题,即使我在Preferences-> Java-> Installed JREs下添加了正确的位置,工作区的默认设置实际上也没有改变。这是在我创建的用于代码分支的新工作区中。它最初设置为JRE位置,而不是JDK。即使更改了首选项,我也可以使用命令行进行构建,但是在Eclipse中进行构建不会产生编译器错误。请参阅

Maven软件包编译错误

对于我的答案,必须手动编辑哪些Eclipse配置文件以使Eclipse识别正确的默认工作区。我仍然不知道为什么首选项设置没有保留到新工作区的配置中。

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.