23

我在 Eclipse 中使用 Maven 创建了一个 webapp 项目。当我在命令提示符下运行命令 mvn package 时,它​​显示以下错误。

[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: 4.310s
[INFO] Finished at: Tue Mar 05 14:32:23 IST 2013
[INFO] Final Memory: 16M/218M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.0:compile (default-compile) on project  Compilation fa
ilure
[ERROR] ***No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?***
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch.
[ERROR] Re-run Maven using the -X switch to enable full debug logging.
[ERROR]
[ERROR] For more information about the errors and possible solutions, please read the following articles:
[ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoFailureException

我试图改变jdk和jre。但不工作。仍然显示相同的错误

4

12 回答 12

49

Windows 7 - 64 位中,存在权限问题,阻止安装程序将文件解压缩C:\Program Files\Java\jdk1.6.xx\lib\tools.jar到本地。这个 jar 文件是maven-compiler-plugin3.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 查看包含 tools.jar 的 jar 列表,您可以将其添加为 Add External JAR

然后通过以下步骤配置 maven 运行:

  • 运行->运行配置->填写名称、基本目录和目标。
  • 然后在同一窗口中移动到 JRE 选项卡并指向 JDK \jdk1.6.xx\
于 2013-04-19T22:06:42.373 回答
13

转到“运行时配置”并将 JRE 配置为 JDK。

为您的运行时选择正确的 JDK

或者正如@PawanKumarBaranwal 建议的那样,设置您的默认JDK。但请注意您是否配置了多个 JRE。

选择默认 JRE

于 2015-09-16T20:00:53.710 回答
3

对我有用的(32 位 Windows 7)是将以下内容添加到您的路径环境变量中:

%JAVA_HOME%\lib;

于 2013-10-17T19:14:10.240 回答
3

尝试这个。转到窗口 --> 首选项 --> Java --> 已安装的 JRE。

双击 JRE,它位于已安装的 JRE 中。

在 JRE Home 中提供JDK 路径(例如C:\Program Files\Java\jdk1.7.0_80\),并将 JRE 名称指定为 JDK。单击完成,然后单击确定。

对我来说,它奏效了。

于 2015-09-16T19:22:58.410 回答
2

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

可能已经添加了 jre 在此处输入图像描述

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

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

然后点击完成。

你会看到这样的窗口

在此处输入图像描述

选择 JDK -> 应用 -> 确定

你完成了。

于 2017-04-11T11:23:34.877 回答
1

就我而言,错误“此环境中未提供编译器。也许您在 JRE 而不是 JDK 上运行”是由于 JRE 安装在与 JDK 下的默认位置不同的位置。

在 64 位 linux 下运行,我将 Oracle 的 64 位 JDK SE 1.6.0_45 安装在/opt/java. 32 位和 64 位 JRE 安装在/opt/java/jre32/opt/java/jre64,带有 jre 符号链接:(即ln -s jre64 jre),因此jre ->./jre64 (meaning/opt/jdk/jre was a symlink referencing/opt/jdk/jre64)。

一旦我将 jre64 重命名为 jre(即。rm jre ; mv jre64 jre ; ln -s jre jre64),这个问题就消失了;我能够使用 maven(在 netbeans 内部)进行构建。

Maven 似乎正在查看 JRE 路径,说“jre64 不是默认 JRE-inside-of-JDK 安装的正确名称,因此假设 ../ 处不存在 JDK”),这将阻止它从解析包含 tools.jar 等的 JDK lib 目录的位置。

尚未对其进行测试,但如果 JRE 不在默认位置(或者可能不在%JAVA_HOME%\jre目录中),则在 Windows 下可能会发生同样的事情。如果同时安装了 JDK 和 JRE,Oracle 的安装程序希望将 JRE 安装在%JAVA_HOME%\jre6,而不是%JAVA_HOME%\jre。那可能是因为\jreJDK卸载过程需要该目录;如果 JRE 已经安装在 JDK 的 JRE\jre目录之上,而不是在\jre6 处,卸载 JRE 后卸载 JDK 将失败,除非复制 \jre 目录,卸载 JRE,并将\jre副本恢复为\jre.

于 2013-08-15T17:18:18.257 回答
1

preferences>installed JRE>

然后点击add

选择 C:\program files\java\

enter

它将搜索除 jdk 之外的其他 jre,然后选择未选择的

于 2016-01-27T10:07:27.340 回答
1

有几个选项可以指定。

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

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

3) 备用 JRE 可用于从您的目录中选择 jdk

于 2017-02-22T05:35:21.757 回答
0
  1. 检查您的安装 JDK 及其路径 -下载链接

  2. 检查环境变量的路径 -检查

  3. 添加eclipse windows->preferences->Java->installed JREs->add->standart VM -> JRE home (jdk path exmp:'C:\Program Files\Java\jdk1.8.0_221')然后应用。

  4. 右键单击您的project -> properties -> select (Libraries -> JRE System libraries) -> edit -> choose workspace default JRE (JDK.1.8.0_221)

  5. 右键单击您的项目-> Maven update clean 并再次安装项目。

于 2019-11-25T22:56:36.223 回答
0

以以下方式设置路径

将 jdk 的路径保留在路径变量中的第一位,这样其他 java 路径将被忽略。编译错误将得到解决。

于 2017-11-22T14:15:03.643 回答
0

我正在为 Eclipse (V3.3) 使用 maven 插件,并且在一段时间内一直在努力解决这个错误。我终于找到了与陈旧的 java 源相关的解决方案:它与 JRE 或 JDK 无关(我使用 JRE 1.7)。

我在其他论坛上发现这是 maven-compiler-plugin 中的一个已知问题(V3.3 和 3.5.1 的结果相同)。

所以,我只是手动重新编译过时的源代码并再次运行目标,这次没有任何问题。

要找出陈旧的源,请使用选项 -X(调试)运行目标并查找以

[DEBUG] Stale source detected:

表示一个java类文件(要手动重新编译......)。

希望这会很有用,因为 maven 编译器给出的消息让我在错误的方向上搜索(玩 JRE、JDK、JAVA-HOME 等)。

于 2016-06-04T15:49:56.737 回答
0

在创建第二个工作区以在单独的源代码分支中工作后,我遇到了一种奇怪的情况,我可以在新工作区的命令行中进行 Maven 构建,但不能在 Eclipse 中。我尝试按照其他人的描述将 JRE 配置设置为 JDK,但仍然没有运气。我最终不得不搜索新工作区的 .metadata 目录的全部内容,以找到拒绝重新配置的违规文件。罪魁祸首是

.plugins/org.eclipse.core.runtime/.settings/org.eclipse.jdt.launching.prefs

尽管我的配置发生了变化,它仍然指向错误的目录。我进行了手动编辑以提供正确的 JDK 名称和位置。我还编辑了下的文件

.plugins/org.eclipse.debug.core/.launches

这些同样都指向 JRE 而不是 JDK。完成这些编辑后,我可以在 Eclipse 中的第二个工作区中构建项目,而不仅仅是从命令行。

于 2019-02-04T20:24:02.927 回答