76

当我尝试生成战争文件时,它显示了一些错误,例如

[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar

当我这样做echo %path%

 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b
in;C:\Program Files\Notepad++\;%JDK_HOME%

当我做echo %JDK_HOME%

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin

当我的环境变量是 jdk 时,我不知道为什么 maven 指的是 jre。我还将安装的 JRE 更改为 jdk1.6。

4

17 回答 17

153

仅在 Eclipse 设置中

它有 4 个步骤 TODO。

步骤 1:右键单击 Eclipse 项目属性

第 2 步:Java 构建路径 -> 库

第 3 步:选择 JRE System Library -> 单击 Edit 按钮 -> 单击 Installed JREs... 按钮

第 4 步:将 JRE 编辑为 Set JRE Home = JAVA_HOME

截图:

在此处输入图像描述

于 2013-03-20T09:53:15.713 回答
36

转到窗口 -> 首选项... -> Java -> 已安装的 JRE

编辑 JRE Home = JAVA_HOME 或 JAVA_HOME\jre

例如,如果您使用安装在 C:\Program Files 中的 jdk1.6.0_04,请进行以下更改:

C:\Program Files\Java\jdk1.6.0_04\jre 或 C:\Program Files\Java\jdk1.6.0_04 而不是默认的 C:\Program Files\Java\jre7

于 2012-12-21T16:55:01.983 回答
5

有同样的问题,但在我的情况下,目录 eclipse 指出 JRE 是 JDK。所以,我搜索了那个 tools.jar 并且在那里。

我做了

  • Java 构建路径 >> 库
  • JRE 系统库 >> 编辑
  • 已安装的 JRE >> 点击我的 jdk >> 编辑
  • 添加外部罐子>> tools.jar

然后编译好

于 2013-07-25T15:09:48.240 回答
3

JDK_HOME 变量应该始终指向 jdk 的基本目录,而不是 bin 目录:

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04

那已定义,将您的路径固定为

C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\bin;C:\Program Files\Notepad++\;%JDK_HOME%\bin
于 2012-09-25T14:49:07.670 回答
3

这是一个 Eclipse 问题。当我尝试使用从命令行构建它时

mvn package

它工作得很好。

于 2012-09-25T15:46:41.277 回答
2

听起来您已JDK_HOME定义为用户变量并PATH定义为系统变量,反之亦然 -echo %PATH%不应包含未解析的变量,例如...;%JDK_HOME%.

确保%JDK_HOME%\bin路径在您的 PATH 变量上,未解析,即使您必须明确输入路径。

于 2012-09-25T14:46:04.520 回答
2

我有同样的错误,因为 JUNIT 版本,我有 3 个 3.8.1,我已经更改为 4.8.1。

所以解决方案是

你必须去 POM,并确保你的依赖看起来像这样

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
于 2013-10-01T09:27:31.177 回答
2

对于在 Eclipse 中面临此问题的其他人,即使路径设置为正确 JDK,您也需要从已安装的 JRE 中删除其他 JRE。

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

单独选择未使用的 JRE 并删除

它对我有用。

于 2019-09-21T07:22:56.610 回答
1

我尝试了上述所有建议,但对我不起作用,但我发现了如何解决我的错误。

以下步骤使项目编译成功:

在项目资源管理器中,右键单击项目,选择“属性” 在右侧的树中,转到 Java 构建路径。选择选项卡“库”。单击“添加库”。选择 JRE 系统库。点击下一步。选择单选按钮备用 JRE。单击“已安装的 JRE”。选择具有正确版本的 JRE。单击应用并关闭。在下一个屏幕中,单击完成。在属性窗口中,单击应用并关闭。在项目资源管理器中,右键单击您的 pom.xml 并选择 run as > maven build 在目标文本框中,编写“安装”。单击运行。

这使得项目在我的情况下成功构建。

于 2019-01-04T12:22:40.123 回答
0

我遇到了类似的问题,由于没有人发布与我类似的方法,所以我开始了。

导航到您要启动的运行配置。
那里选择了 JRE 选项卡。在那里调整“运行时 JRE”,你就可以开始了。

于 2014-05-28T07:18:13.530 回答
0

在 Eclipse 中,导入 Maven 项目或调用“更新源”等操作在运行 Eclipse 的同一 JVM 中运行。如果该 JVM 来自不属于 JDK 的 JRE,则不会有 Java 编译器(tools.jar)。

因此,要从 Eclipse 中启动 Maven,用于启动的 JRE 也需要来自 JDK。默认情况下 Eclipse 注册 JRE 它是在其中启动的,但这可以在 Parthasarathy 上面提到的“Window / Preferences ... / Java / Installed JREs”首选项页面上进行配置

或者,您可以在 pom.xml 中指定 compilerId,这样 Maven 在编译 Java 代码时就不会寻找 JDK:

 <plugin>
  <artifactid>maven-compiler-plugin</artifactid>
  <configuration>
    <compilerid>eclipse</compilerid>
  </configuration>
  <dependencies>
    <dependency>
      <groupid>org.codehaus.plexus</groupid>
      <artifactid>plexus-compiler-eclipse</artifactid>
      <version>xxxx</version>
    </dependency>
  </dependencies>
</plugin>
于 2014-04-09T04:35:59.953 回答
0

如果您执行上述所有步骤,可能会感到困惑,而我们的问题只是缺少 tools.jre,那么只需按照以下步骤添加 tools.jre,问题就解决了。

第 1 步:在 Eclipse 中转到 Windows -> 首选项

第 2 步:Java -> 已安装的 JRE(双击它)

第 3 步:单击编辑按钮 -> 单击添加外部 JAR

第 4 步:现在选择 tools.jar 路径

现在应用更改,它工作正常。

这是屏幕截图

于 2018-03-17T06:46:59.540 回答
0

尽管上面有一些关于这个问题的非 Eclipse 答案没有提到 Eclipse,但它们需要更改路径变量。另一种方法是使用命令行选项 java.home,例如:

mvn package -Djava.home="C:\Program Files\Java\jdk1.8.0_161\jre"

注意末尾的 \jre - 一个令人惊讶的必要性。

于 2018-06-30T19:21:08.000 回答
0

当前的答案都没有帮助我。我们得到了类似的东西:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:
    #.#.#:compile (default-compile) on project Streaming_Test: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] /opt/java/J7.0/../lib/tools.jar

发生这种情况是因为 Java 安装已确定它是 JRE 安装。它期望在 JRE 子目录上方../lib有 JDK 内容,因此在路径中。我们tools.jar$JAVA_HOME/lib/tools.jar不在$JAVA_HOME/../lib/tools.jar

不幸的是,我们没有在我们的操作系统上安装 JDK 的选项(不要问),所以这不是一个选项。我通过将以下内容添加到 maven 来解决问题pom.xml

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <fork>true</fork>  <!-- not sure if this is also needed -->
      <executable>${JAVA_HOME}/bin/javac</executable>
      <!--        ^^^^^^^^^^^^^^^^^^^^^^ -->
    </configuration>
  </plugin>

通过将可执行文件指向正确的位置,这至少可以解决我们的编译失败问题。

于 2019-08-15T22:22:16.967 回答
0

我可以通过执行以下步骤来解决:

右键单击项目选择构建路径->配置构建路径->选择库选项卡->然后选择JRE系统库[您拥有的JavaSE-1.7版本]->单击编辑按钮->在JRE系统库窗口中选择执行环境- 在下拉列表中,您可以选择为我列出的 JDK 它的 JavaSE-1.7 -> 在此单击环境按钮旁边 -> 在执行环境窗口中,您必须再次为我选择 Java SE 它的 JavaSE-1.7 -> 只需选择它,您将在 Compatible JREs 选项卡中有选项,因此请选择您想要在我的情况下使用的 jdk1.7.0_25 的 JDK。


单击确定并通过执行适当的操作确定/完成来完成其余窗口。

最后做 Maven Clean 和 Maven Install。

于 2015-07-22T14:29:32.707 回答
0

这取决于 Maven 版本。当您安装较新版本的 Maven 时,不会出现此错误。您还可以使用 tools.jar 文件 lib/tools.jar 添加另一个目录 - 它也解决了这个问题。

于 2016-07-05T20:42:45.153 回答
-1

对于Intellij Idea ,请适当设置所有内容(类似于此):

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_60
JRE_HOME = JAVA_HOME\jre

并且不要忘记重新启动 Idea。该程序在启动时获取变量,因此在程序运行时对环境变量的任何更改都不会产生任何影响。

于 2015-09-04T08:36:14.553 回答