maven构建失败:无法找到Javac编译器:jre或jdk问题

时间:2010-02-08 15:22:38

标签: java eclipse maven

我将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?

32 个答案:

答案 0 :(得分:136)

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

在Window-&gt; Preferences ...-&gt; Java-&gt; Installed 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。

答案 1 :(得分:19)

eclipse.ini需要vm参数指向你的jdk位置。

编辑eclipse.ini文件以指向您的jdk主页,如下所示 -

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

这确保Eclipse将运行JDK,而不是计算机上的任何默认JRE。

答案 2 :(得分:12)

你试试:

转到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替换时才有意义。

答案 3 :(得分:9)

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

<configuration>
<fork>true</fork>
<source>1.6</source>
<target>1.6</target>
</configuration>

非常感谢,Sam Yang ......你结识了我的一天

答案 4 :(得分:8)

我有同样的问题!一直在搜索和搜索天,因为所有关于“把-vm c:\ program files \ java \ jdkxxxxx \ bin”放在ini ar中作为一个shortcurt的参数的喋喋不休并不是所有的heklp! (我听起来很沮丧吗?相信我,这是轻描淡写的!我只是因为我失去了一周试图让Maven变得可靠而感到愤怒!)

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

直到我去窗口 - &gt;偏好 - &gt; java - &gt;安装了JRE。我使用JDK的位置添加了一个新的JRE,然后删除了JRE。突然,maven跑稳了!

也许值得在apache手册中输入字体大小为30左右的字母? 尽管如此,这对java社区来说简直太过分了!我无法想象所有这些人失去了多少天,试图解决他们的问题!我无法想象这是作为最终版本发布的。我个人甚至不敢以BETA软件的名义发布这样的东西......

亲切的问候......经过一周的篡改,我终于可以开始发展了。我希望我的老板不会发现这一点。我花了很多力气说服他不要去.NET,我已经为此感到遗憾。

答案 5 :(得分:3)

使用Run as - &gt;我遇到了同样的问题。 Maven在Eclipse中安装。 JAVA_HOME和eclipse.ini都没关系,指向我最新的JDK。但是m2clipse使用了JRE。在Eclipse之外使用mvn install工作得很好! 在我的情况下,我解决了以下问题: 1.在Eclipse中导航:窗口 - &gt;偏好 - &gt; Java - &gt;已安装的JRE 2. JRE和JDK有两个非活动条目。活动的是最新安装的JDK。删除所有条目,但是一个maven应该使用。

我认为maven没有考虑哪一个活跃......

答案 6 :(得分:3)

我刚刚安装了maven 3.0.4,相应地设置了M2_HOMEM2JAVA_HOME。然后我运行了以下命令:

mvn archetype:generate....

mvn compile

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

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

我的设置没有任何问题。搜索之后,我决定查看mvn.bat,我在每一步都回显%JAVA_HOME%并且它正确显示为C:\java\jdk1.6但是当我运行命令:mvn --version时,它显示Java主页: 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。

答案 7 :(得分:2)

我通过将Installed JRE的位置更改为JDK本身中的目录来解决了这个问题。设置JAVA_HOME环境变量的正确值并没有解决问题。

就我而言,有两个目录

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

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

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

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

答案 8 :(得分:2)

仅限Eclipse设置

执行以下步骤:

  1. 右键单击Eclipse项目属性

  2. Java构建路径 - &gt;库

  3. 选择JRE系统库 - &gt;单击“编辑”按钮

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

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

  6. <强> ScreentShot:

    enter image description here

    非常感谢,

    帕塔

答案 9 :(得分:2)

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

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

答案 10 :(得分:2)

答案 11 :(得分:1)

解决方案很简单,有时候是日食窗口 - &gt;偏好 - &gt; java - &gt;已安装的JRE指向C:\Program files\Java\jre,当我将其更改为C:\Program files\Java\JDK 6.0\jre时,它正在100%工作。

答案 12 :(得分:1)

转到Eclipse窗口 - &gt;首选项...-&gt; Java-&gt;已安装的JRE应指向您安装的JDK,而不是JRE。

答案 13 :(得分:1)

我在Amazon Linux上遇到了同样的问题。原来我必须安装jdk的开发版本:

sudo yum -y install java-1.7.0-openjdk-devel

答案 14 :(得分:1)

就我而言,在eclipse中Run-> Debug Configurations 在选择的jre选项卡中,jdk而不是jre解决了问题。

答案 15 :(得分:1)

不要忘记,如果从特定的Eclipse配置运行项目,则应在“运行配置”中更改Java运行时 - &gt; '你的maven配置' - &gt;在您将Eclipse JDK添加到Eclipse首选项之后,“JRE选项卡”。

答案 16 :(得分:1)

右键点击Project - &gt;属性 - &gt; Java构建路径。选择JRE系统路径 - &gt;编辑。选择Workspace Default JRE,并将其指向JDK&gt; 1.4

答案 17 :(得分:1)

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

即使这样,问题也可能再次发生。我在Eclipse(Juno)中的出路是做Maven -> Update project...之后问题就消失了。

我怀疑原因是一些Eclipse生成的文件(.classpath,.project,.preferences)在我的问题中的项目中进行了颠覆。因此,svn更新引入了这个问题,Eclipse中maven的配置更新再次解决了这个问题。

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

答案 18 :(得分:1)

Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side

答案 19 :(得分:0)

我猜想编译器的位置是在pom中定义的,因为编译器插件位于显示的jre位置,而不是你有JAVA_HOME指向的jdk位置。

答案 20 :(得分:0)

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

这是另一个更具体/更明确的答案[比我在这里的任何答案中看到的]逐步说明如何做到这一点: How do you install JDK?

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

答案 21 :(得分:0)

确保eclipse.ini中的“-vm”分为两行,即:

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

答案 22 :(得分:0)

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

答案 23 :(得分:0)

如果您设置了JAVA_HOME,问题仍然存在,请尝试以下操作。 (我在新安装的电脑上遇到了同样的问题。)

假设您正在使用Eclipse。

  • 打开窗口 - 首选项 - java - 安装jre 删除你所有的,添加你想要使用的(JDK,没有JRE!)
  • 在同一个窗口中打开maven - 安装,添加您下载并在某处提取的mave安装。 (不要使用嵌入式maven安装,它有一些已知的错误)

多数民众赞成。你的项目不会受到荷兰问题的影响。 希望有所帮助。

答案 24 :(得分:0)

我有同样的错误,因为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>

答案 25 :(得分:0)

我更改了maven-compiler-plugin的配置,以添加值为true的可执行文件和fork。

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

它对我有用。

答案 26 :(得分:0)

Echo %JAVA_HOME%
然后mvn --version

JRE路径应该相同....然后转到Window -> preferences - java - installed jre's
位置应与Java_Home显示的位置相同。

答案 27 :(得分:0)

您需要在JAVA_HOME中指明mvn.ini(它位于maven文件夹/bin中),您的问题就会消失。

答案 28 :(得分:0)

转到属性,右键单击项目。

在LINKED RESOURCES中添加一个名为JAVA_HOME的新路径并放置您的jdk位置,例如&#34; C:\ Program Files \ Java \ jdk1.8.0_73&#34;

那就是!!

答案 29 :(得分: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 构建文件,然后选择运行方式,并选择“Ant Build”中的第二个选项。

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

4)选择 JRE 标签。

5)你会看到3个单选按钮,他们将选择JRE或JDK作为选项。

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

7)点击“应用”。

就是这样...... !!!

答案 30 :(得分:0)

有同样的问题。以上都没有,这对我有用:

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

答案 31 :(得分:0)

转到Eclipse&gt;偏好&gt; Java&gt;已安装的JRE&gt;选择您指向的jre位置,然后单击Edit&gt;添加外部JAR并选择tools.jar