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_HOME
, M2
和JAVA_HOME
。 然后我运行以下命令:
mvn archetype:generate....
mvn compile
我得到失败的消息,如: maven unable to locate javac compiler
。
在我的电脑上,我有默认的jre安装在c:\ program files \ java \ jre.1.6 。 而我有其他的c:\ java \ jdk1.6和JAVA_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)。
基于http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html ,你必须在你的pom.xml中设置fork为true。
我通过将已安装的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设置
执行以下步骤:
-
右键点击Eclipse项目属性
-
Java构buildpath – >库
-
selectJRE系统库 – >点击编辑button
-
点击“已安装的JRE …”button
-
将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
JRE
path应该是相同的….然后去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)点击应用。
而已…!!!