maven构build失败:找不到Javac编译器:jre或jdk问题

我有我的JAVA_HOME设置

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

我运行maven安装后,从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

当我运行configuration设置为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?

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

在Window-> Preferences …-> Java-> Installed JRE中添加和设置JRE:

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

如果不是这种情况,则可能是JAVA_HOMEpath中的括号和空格引起了问题。 尝试将您的JDK复制到其他位置并更新您的JAVA_HOME。

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

编辑eclipse.ini文件来指向你的jdk home,如下所示 –

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

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

你试试:

转到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的第一部分(直到/ ..)被replace, C:\Program Files\Java\jdk1.6.0_27\jre

设置叉正确解决了我的问题。

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

非常感谢你,Sam Yang ..你让我的一天

我有相同的问题! 一直在search和search的日子,因为所有关于“把-vm c:\ program files \ java \ jdkxxxxx \ bin”作为一个简短的参数的喋喋不休都没有heklp! (我听起来很沮丧吗?相信我,这简直太轻描淡写了,因为我失去了一个星期的努力让Maven变得可靠!

我有非常难以预料的行为。 有时编译,有时不编译。 如果我做了一个干净的maven,它找不到编译器,并失败。 如果我在构buildpath中改变了一些东西,它会突然重新开始工作!

直到我去了window – > preferences – > java – >安装了JRE的。 我使用JDK的位置添加了一个新的JRE,然后删除了JRE。 突然间maven跑稳了!

也许这是值得放在字母大小30左右的阿帕奇手册? 在所有的应有的尊重,这是简单的java社区! 我无法想象所有这些人失去了多less天,试图解决他们的这种问题! 我不可能想象这是作为最终版本发布的。 我个人甚至不敢在BETA软件的名字下发布这样的东西…

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

我在Eclipse中使用Run as – > Maven install来得到同样的问题。 JAVA_HOME和eclipse.ini都可以,并指向我最新的JDK。 但是m2clipse使用了JRE。 使用Eclipse以外的mvn安装工作正常! 在我的情况下,我解决了这个问题,如下所示:1.在Eclipse中导航:窗口 – >首选项 – > Java – >已安装的JRE 2. JRE和JDK有两个不活动的条目。 活动的是最新安装的JDK。 删除所有条目,但一个maven应该使用。

我想maven不会考虑哪一个是活跃的…

我刚刚安装了maven 3.0.4,相应地设置了M2_HOMEM2JAVA_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

我的设置没有看到任何问题。 search后,我决定查看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。

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

检查设置文件 。 总共有3个系统,用户和项目。 它最有可能在安assembly置($ M2_HOME / conf / settings.xml)或者可能是每个用户configuration($ {user.dir} /。m2 / settings.xml)。

我通过将已安装的JRE的位置更改为JDK本身中存在的目录来解决此问题。 设置JAVA_HOME环境variables的正确值并不能解决问题。

在我的情况下,有两个目录

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

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

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

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

只有Eclipse设置

执行以下步骤:

  1. 右键点击Eclipse项目属性

  2. Java构buildpath – >库

  3. selectJRE系统库 – >点击编辑button

  4. 点击“已安装的JRE …”button

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

ScreentShot:

在这里输入图像说明

非常感谢,

帕塔

右键点击Project – > Properties – > Java Build Path。 selectJRE系统path – >编辑。 select工作区默认JRE,并将其指向JDK> 1.4

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

解决方法很简单,有时候将eclipse的窗口 – > preference – > java – >已安装的JRE指向C:\Program files\Java\jre ,当我将其改为C:\Program files\Java\JDK 6.0\jre正在工作100%。

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

即使如此,问题可能会重演。 我在Eclipse(Juno)中的出路是做一个Maven -> Update project...之后问题就消失了。

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

真正的解决scheme: 省略Eclipse从版本控制生成的.files文件 ,并让maven eclipse插件处理项目configuration。 (额外的指针/build议欢迎)

不要忘记,如果您从特定的Eclipseconfiguration运行项目,则应在添加正确的JDK之后,在“运行configuration” – >“您的mavenconfiguration” – >“JRE选项卡”中更改Java运行时你的Eclipse首选项。

在我的情况下,在Eclipse中Run-> Debug Configurations在jre选项卡中select了jdk而不是jre解决了问题。

转到Eclipse Window-> Preferences …-> Java-> Installed JRE应该指向你安装的JDK,而不是JRE。

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

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

假设你正在使用Eclipse。

  • 打开窗口 – 首选项 – java – 安装jre的删除所有你在那里,添加你想要使用的期望(JDK,没有JRE!)
  • 在同一个窗口中打开maven – 安装,添加你下载并解压的地方。 (不要使用embedded式的maven安装,它有一些已知的错误)

就这样。 你的项目不会受到sutch问题的困扰。 希望有帮助。

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

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

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

下面是另一个更具体/清晰的答案[比我在这里的任何答案中已经看到]一步一步如何做到这一点: 如何安装JDK?

这就是为了解决这个问题。

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

所以解决scheme是

你必须去POM,并确保你的依赖关系是这样的

  <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>4.8.1</version> <scope>test</scope> </dependency> 

我改变了maven-compiler-plugin的configuration来添加可执行文件和fork值为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> 

它为我工作。

确保eclipse.ini中的“-vm”位于两个sperate行上,即:

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

Echo %JAVA_HOME%
那么mvn --version

JREpath应该是相同的….然后去Window -> preferences - java - installed jre's JRE Window -> preferences - java - installed jre's
位置应该与Java_Home显示的相同。

我在Amazon Linux上遇到了同样的问题。 原来我不得不安装jdk的devel版本:

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

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

在LINKED RESOURCES中添加一个名为JAVA_HOME的新path,并放置您的jdk位置,如“C:\ Program Files \ Java \ jdk1.8.0_73”

就这样!!

解决这个问题很简单….

如果你没有ANT构build文件,然后生成它。 在eclipse中,你可以很容易地创build一个ANT文件。

参考链接创buildANT构build文件[ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse%5D

现在按照给定的步骤:

1)将ANT构build文件添加到处于视图窗口中的ANT视图中。

2)右键单击您的ANT构build文件,然后select“运行方式” ,然后select“Ant构build”中的第二个选项。

3)现在一个对话框将打开各种选项和选项卡。

4)selectJRE选项卡。

5)你会看到3个单选button,他们将selectJRE或JDK作为选项。

6)仔细查看单选button选项是否具有选定的JRE ,然后将其更改为JDK

7)点击应用。

而已…!!!