112

我将 JAVA_HOME 设置为:

C:\Program Files (x86)\Java\jdk1.6.0_18

运行后maven install,我从Eclipse收到此消息:

原因:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

我确定这是棘手的部分

请确保您使用的是 JDK 1.4 或更高版本,而不是 JRE

当我运行配置时,它设置为 JRE6。如何将其更改为已安装的 JDK 1.6?

我什至尝试修改插件:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

我仍然得到同样的错误。

我使用 Eclipse Maven 插件。如何在 Eclipse 中从 JRE 更改为 JDK?

4

32 回答 32

143

您可以尝试更新 Eclipse 正在使用的 JDK,如下所示:

在菜单WindowPreferences...JavaInstalled JREs添加和设置 JRE :

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

如果不是这种情况,则 JAVA_HOME 路径中的括号和空格可能会导致问题。尝试将 JDK 复制到其他位置并更新 JAVA_HOME。

于 2010-02-08T15:51:49.970 回答
20

文件eclipse.ini需要vm参数指向您的 JDK 位置。

编辑该eclipse.ini文件以指向您的 JDK 主目录,如下所示 -

-vm
C:\Program Files\Java\jdk1.6.0_06

这可确保 Eclipse 将在 JDK 上运行,而不是在您的机器上运行任何默认 JRE。

于 2011-03-04T15:33:23.470 回答
13

你试试:

转到Preferences/Java/Installed JREs并为该位置添加一个"C:\Program Files\Java\jdk1.6.0_27\jre或类似的东西。

删除一个C:\Program Files\Java\jre6

如您所见,C:\Program Files\Java\jre6\..\lib\tools.jar仅当第一部分(直到 /..)被替换时,路径才有意义C:\Program Files\Java\jdk1.6.0_27\jre

于 2012-10-01T09:25:33.587 回答
10

fork设置为 true 为我解决了这个问题。

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
于 2011-10-24T17:44:26.787 回答
9

我有完全相同的问题!我一直在搜索和搜索几天,因为所有关于“将 -vm c:\program files\java\jdkxxxxx\bin”放在 ini ar 中作为快捷方式参数的喋喋不休根本没有帮助

(我听起来很沮丧吗?相信我,这是轻描淡写的!我只是愤怒,因为我失去了一个星期试图让 Maven 可靠!)

我有非常不可预测的行为。有时它编译,有时不编译。如果我做了一个maven clean,它找不到编译器并且失败了。如果我随后更改了构建路径中的某些内容,它会突然再次起作用!

直到我进入菜单WindowPreferencesJavaInstalled JRE's . 我使用 JDK 的位置添加了一个新的 JRE,然后删除了该 JRE。突然Maven跑稳了!

也许这值得在 Apache 手册中输入字体大小为 30 左右的字母?

恕我直言,这对 Java 社区来说简直太离谱了!我无法想象所有这些人浪费了多少天,试图解决他们的这种问题!我无法想象这是作为最终版本发布的。我个人甚至不敢以beta软件的名义发布这样的东西......

无论哪种方式都亲切的问候......经过一周的篡改,我终于可以开始开发了。我希望我的老板不会发现这件事。我花了很多力气说服他不要去 .NET,我已经为此感到抱歉。

于 2010-05-11T12:27:57.107 回答
3

我在 Eclipse 中使用 Run as -> Maven install 遇到了同样的问题。JAVA_HOME 和 eclipse.ini 没问题,指向我最新的 JDK。但是 m2clipse 使用了 JRE。在 Eclipse 之外使用 mvn install 效果很好!

就我而言,我解决了以下问题:

  1. 在 Eclipse 中导航:菜单WindowPreferencesJavaInstalled JREs
  2. JRE 和 JDK 有两个非活动条目。活动的是最新安装的 JDK。删除所有条目,但 Maven 应该使用的条目除外。

我认为 Maven 没有考虑哪个是活动的......

于 2010-05-10T20:36:05.723 回答
3

基于使用不同的 JDK 编译源,您必须在pom.xml文件中将 fork 设置为 true。

于 2010-11-05T02:39:39.250 回答
3

我刚刚安装了 Maven 3.0.4、setM2_HOMEM2相应JAVA_HOME的。然后我运行了以下命令:

mvn archetype:generate....

mvn compile

我收到失败的消息,例如:maven unable to locate javac compiler

在我的计算机上,我默认将 JRE 安装在C:\program files\java\jre.1.6。我有另一个C:\java\jdk1.6JAVA_HOME设置为此C:\java\jdk1.6

我没有发现我的设置有什么问题。搜索后,我决定查看mvn.bat,我回显了%JAVA_HOME%每一步,它正确显示为C:\java\jdk1.6,但是当我运行命令时mvn --version,它显示 Java home: C:\program files\java\jre1.1.6

最后,我发现我只需要-Djava.home=c:\java\jdk1.6按照下面的命令进行设置,现在就可以正常工作了:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

注意:这适用mvn于命令行,不适用于 Eclipse。

于 2012-05-06T04:07:55.883 回答
2

听起来 Maven 使用的是 JRE,而不是 JDK。也许您在安装 JDK 之前安装了 Maven?

检查设置文件。总共有三个,系统、用户和项目。它最有可能出现在安装配置 ($M2_HOME/conf/settings.xml) 中,或者可能是每个用户的配置 (${user.dir}/.m2/settings.xml)。

于 2010-02-08T16:03:23.597 回答
2

我通过将 Installed JRE 的位置更改为 JDK 本身中存在的目录解决了这个问题。设置适当的JAVA_HOME环境变量值并不能解决问题。

就我而言,有两个目录

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

最初我C:\Program Files\Java\jre7在 Eclipse 中设置为 Installed JRE 并且在 Maven 的情况下我得到了同样的错误(Ant 工作正常)。

通过在 Eclipse 中将已安装的 JRE 更改C:\Program Files\Java\jdk1.7.0_03\jre7为已安装的 JRE,问题就解决了。

于 2012-08-16T04:59:49.493 回答
2

不要忘记,如果您从特定的 Eclipse 配置运行项目,则应在将正确的 JDK 添加到您的 Eclipse 首选项。

于 2013-02-04T15:10:59.967 回答
2

仅限 Eclipse 设置

执行以下步骤:

  1. 右键单击 Eclipse 项目属性

  2. Java 构建路径→ 库

  3. 选择 JRE 系统库 → 单击Edit按钮

  4. 单击“已安装的 JRE...”按钮

  5. 将 JRE 编辑为:设置 JRE Home = JAVA_HOME 或 JAVA_HOME\jre

截屏:

在此处输入图像描述

于 2013-03-20T09:56:18.850 回答
1

右键单击菜单ProjectPropertiesJava Build Path

选择 JRE 系统路径 →编辑。选择 Workspace Default JRE,并将其指向 JDK > 1.4。

于 2010-09-08T10:22:36.957 回答
1

使用菜单WindowPreferencesJavaInstalled JREsExecution Environments -> 单击右侧的复选框。

于 2011-04-29T13:10:32.493 回答
1

解决方案很简单。有时 Eclipse WindowsPreferencesJavaInstalled JREs指向C:\Program files\Java\jre.

当我将其更改为它时,C:\Program files\Java\JDK 6.0\jre它可以 100% 工作。

于 2011-12-21T12:50:15.770 回答
1

正如其他几个人所提到的,Eclipse WindowPreferences...JavaInstalled JREs应该指向您安装的JDK ,而不是JRE。只有这样它才能找到../lib错误消息中提到的文件夹。

即使这样,问题也可能再次出现。我在Eclipse v4.2 (Juno) 中的出路是做一个菜单MavenUpdate project...之后问题就消失了。

我怀疑原因是某些 Eclipse 生成的文件(.classpath、.project、.preferences)在我遇到这些问题的项目的 Subversion 中。因此,SVN 更新引入了该问题,而 Eclipse 中的 Maven 配置更新再次解决了该问题。

真正的解决方案:从版本控制中省略 Eclipse 生成的 .files,让 Maven Eclipse 插件处理项目配置。(欢迎提供其他指针/建议)

于 2012-07-09T08:02:37.243 回答
1

就我而言,在 Eclipse 菜单中RunDebug Configurations

在 JRE 选项卡中选择 JDK 而不是 JRE 解决了这个问题。

于 2013-04-18T17:07:39.093 回答
1

我在 Amazon Linux 上遇到了同样的问题。事实证明,我必须安装 JDK 的开发者版本:

sudo yum -y install java-1.7.0-openjdk-devel
于 2015-06-20T05:53:36.250 回答
1

转到 Eclipse 的菜单WindowPreferences...JavaInstalled JREs应该指向您安装的 JDK,而不是 JRE。

于 2017-01-07T09:40:22.103 回答
0

我猜想编译器的位置是在POM中定义的,以便编译器插件位于显示的 JRE 位置,而不是 JAVA_HOME 指向的 JDK 位置。

于 2010-02-08T15:26:09.283 回答
0

你需要指出(它JAVA_HOMEmvn.iniMaven 文件夹中/bin),你的问题就会消失。

于 2011-12-22T20:16:47.417 回答
0

如果您设置了 JAVA_HOME,但问题仍然存在,请尝试以下操作。

(我在新安装的 PC 上遇到了同样的问题。)

假设您使用的是 Eclipse。

  • 打开WindowPreferencesJavaInstalled jre's . 删除那里的所有内容,添加您想要使用的所需内容(JDK,没有 JRE!)
  • 在同一窗口中打开 maven - 安装,添加您下载并在某处提取的 Maven 安装。(不要使用嵌入式 Maven 安装。它有一些已知的错误。)

就这样。您的项目不会遇到此类问题。

于 2012-03-21T01:03:48.510 回答
0

您还可以确保 Eclipse 具有所有更新的更改。为此,请右键单击您的项目,然后按“刷新”菜单项。

于 2012-04-16T23:35:13.210 回答
0

许多其他答案告诉您将 Eclipse 指向 JDK 而不是 JRE。

这是另一个更具体/更清晰的答案[比我在此处的任何答案中看到的]逐步说明如何做到这一点: 如何安装 JDK?

这就是解决我同样问题的原因。

于 2012-11-22T18:24:05.867 回答
0

确保 eclipse.ini 中的“-vm”位于两条单独的行上,即:

-vm
C:\Program Files\Java\jdk1.6.0_06
于 2013-01-23T09:50:01.790 回答
0

由于JUnit版本,我遇到了同样的错误。我有三个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:31:32.430 回答
0

我将 maven-compiler-plugin 的配置更改为添加executablefork值为 true。

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

它对我有用。

于 2013-11-05T10:15:16.187 回答
0

Echo %JAVA_HOME%然后mvn --version

JRE路径应该相同...然后转到菜单Window Preferences Java Installed JRE 的位置应该与Java_Home显示的相同。

于 2015-02-17T06:42:10.220 回答
0

转到“属性”对话框并右键单击该项目。

Linked resources中,添加一个名为 JAVA_HOME 的新路径并放入您的 JDK 位置,例如“C:\Program Files\Java\jdk1.8.0_73”。

就这样!!

于 2016-02-10T19:52:22.990 回答
0

这个问题的解决方法很简单...

如果您没有Ant构建文件,请生成它。在 Eclipse 中,您可以轻松地创建Ant文件。

请参阅创建Ant构建文件的链接 [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse]

现在按照给定的步骤操作:

1)在视图窗口中的 Ant 视图中添加您的Ant构建文件。

2)右键单击您的Ant构建文件并选择Run As和该“Ant Build”中的第二个选项。

3) 现在将打开一个对话框,其中包含各种选项和选项卡。

4) 选择JRE选项卡。

5) 您将看到三个单选按钮,它们将选择 JRE 或 JDK 作为选项。

6)仔细查看单选按钮选项是否选择了JRE,然后将其更改为JDK

7) 单击应用。

就是这样...!!!

于 2016-06-29T10:59:22.760 回答
0

我遇到过同样的问题。以上都不起作用,但这对我有用:

我将 JAVA_HOME 从 ...\jdk.1.8.0\ 更改为 ...\jdk.1.8.0\jre\

于 2016-09-05T10:16:06.703 回答
0

转到 Eclipse → PreferencesJavaInstalled JREs → 选择您指向的 JRE 位置,然后单击EditAdd External JARs并选择tools.jar文件。

于 2017-08-08T08:39:59.803 回答