我将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
当我将配置运行到JRE6时,如何将其更改为已安装的JDK 1.6
EDIT
我甚至试图修改插件:
<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?
30 回答
确保eclipse.ini中的“-vm”位于两个sperate行,即:
做
Echo %JAVA_HOME%
那么
mvn --version
JRE
路径应该相同....然后去Window -> preferences - java - installed jre's
位置应与
Java_Home
显示的相同 .转到属性右键单击项目 .
在LINKED RESOURCES中添加一个名为JAVA_HOME的新路径并放置您的jdk位置,例如“C:\ Program Files \ Java \ jdk1.8.0_73”
就这样!!
许多其他答案告诉您将Eclipse指向JDK而不是JRE .
这是另一个更具体/更明确的答案[比我在这里的任何答案中看到的]逐步说明如何做到这一点:How do you install JDK?
这就是解决我同样问题的原因 .
您可以尝试更新Eclipse正在使用的JDK,如下所示:
在Window-> Preferences ...-> Java-> Installed JREs中添加和设置JRE:
如果不是这种情况,则JAVA_HOME路径中的括号和空格可能会导致问题 . 尝试将JDK复制到其他位置并更新JAVA_HOME .
eclipse.ini需要vm参数指向你的jdk位置 .
编辑
eclipse.ini
文件以指向您的jdk home,如下所示 -这可以确保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
仅在第一部分(直到/ ..)被C:\Program Files\Java\jdk1.6.0_27\jre
替换时才有意义 .将Fork设置为true可以解决我的问题 .
非常感谢,Sam Yang ......你结识了我的一天
我有同样的问题!一直在搜索和搜索天,因为所有关于“把-vm c:\ program files \ java \ jdkxxxxx \ bin”放在ini ar中作为一个shortcurt的参数的喋喋不休并不是所有的heklp! (我是否听起来很沮丧?相信我,这是轻描淡写的!我只是因为我失去了一周试图让Maven变得可靠而感到愤怒!)
我的行为非常不可预测 . 有时它编译,有时不编译 . 如果我做了maven clean,它找不到编译器并且失败了 . 如果我然后在构建路径中更改了某些内容,它会突然再次运行!!
直到我去窗口 - >首选项 - > java - >安装了JRE . 我使用JDK的位置添加了一个新的JRE,然后删除了JRE . 突然,maven跑稳了!
也许这值得在apache手册中放入字体大小为30左右的字母?尽管如此,这对java社区来说简直太过分了!我无法想象所有这些人失去了多少天,试图解决他们的问题!我无法想象这是作为最终版本发布的 . 我本人甚至不敢以BETA软件的名义发布这样的东西......
亲切的问候两种方式....经过一周的篡改后,我终于可以开始发展了 . 我希望我的老板不会发现这一点 . 我花了很多力气说服他不要去.NET,我已经为此感到遗憾 .
我在Eclipse中使用Run as - > Maven install遇到了同样的问题 . JAVA_HOME和eclipse.ini都没关系,指向我最新的JDK . 但是m2clipse使用了JRE . 在Eclipse之外使用mvn install工作得很好!在我的例子中,我解决了以下问题:1 . 在Eclipse中导航:Window - > Preferences - > Java - > Installed JRE 2. JRE和JDK有两个非活动条目 . 活动的是最新安装的JDK . 删除所有条目,但一个maven应该使用 .
我认为maven没有考虑哪一个活跃...
我有相同的错误,因为JUNIT版本,我有3 3.8.1,我已经改为4.8.1 .
所以解决方案是
你必须去POM,并确保你的依赖看起来像这样
我改变了maven-compiler-plugin的配置来添加可执行文件和fork值真正 .
它对我有用 .
我刚刚安装了maven 3.0.4,相应地设置了
M2_HOME
,M2
和JAVA_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 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?
检查settings files . 有3个总计,系统,用户和项目 . 它最有可能出现在安装配置($ M2_HOME / conf / settings.xml)或者可能是每用户配置($ / .m2 / settings.xml)中 .
基于http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html,您必须在pom.xml中将fork设置为true .
我通过将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工作正常) .通过将已安装的JRE更改为
C:\Program Files\Java\jdk1.7.0_03\jre7
作为Eclipse中的已安装JRE,问题得以解决 .Eclipse setup only
执行以下步骤:
右键单击Eclipse项目属性
Java构建路径 - >库
选择JRE系统库 - >单击编辑按钮
单击“已安装的JRE ...”按钮
编辑JRE为:设置JRE Home = JAVA_HOME或JAVA_HOME \ jre
ScreentShot:
非常感谢,
帕塔
右键单击Project - > Properties - > Java Build Path . 选择JRE系统路径 - >编辑 . 选择Workspace Default JRE,并将其指向JDK> 1.4
Window -> Preferences -> Java -> installed JREs -> Execution Enviroments -> click the checkbox on the right side
解决方案很简单,有时候eclipse窗口 - >首选项 - > java - >安装的JRE指向
C:\Program files\Java\jre
,当我将其更改为C:\Program files\Java\JDK 6.0\jre
时它正在100%工作 .正如其他几个人所提到的,Eclipse
Window->Preferences...->Java->Installed JREs
应指向您安装的 JDK ,而不是JRE . 只有这样它才能找到错误消息中提到的../lib
文件夹 .即使这样,问题也可能再次发生 . 我在Eclipse(Juno)中的出路是做一个
Maven -> Update project...
,之后问题就消失了 .我怀疑原因是一些Eclipse生成的文件(.classpath,.project,.preferences)是在我正遇到这些问题的项目中进行颠覆 . 因此,svn更新引入了这个问题,Eclipse中maven的配置更新再次解决了这个问题 .
真正的解决方案: omit Eclipse generated .files from version control ,让maven eclipse插件处理项目配置 . (欢迎提供其他指示/建议) .
不要忘记,如果从特定的Eclipse配置运行项目,则应在添加正确的JDK后,在“运行配置” - >“您的maven配置” - >“JRE选项卡”中更改Java运行时你的Eclipse偏好 .
在我的情况下,在eclipse中
Run-> Debug Configurations
在jre选项卡中选择了jdk而不是jre解决了问题 .我在Amazon Linux上遇到了同样的问题 . 事实证明我必须安装jdk的devel版本:
sudo yum -y install java-1.7.0-openjdk-devel
转到Eclipse Window-> Preferences ...-> Java-> Installed JRE应指向您安装的JDK,而不是JRE .
我猜想编译器的位置是在pom中定义的,因为编译器插件位于显示的jre位置,而不是你有JAVA_HOME指向的jdk位置 .
如果您设置了JAVA_HOME,问题仍然存在,请尝试以下操作 . (我在新安装的电脑上遇到了同样的问题 . )
假设您正在使用Eclipse .
打开窗口 - 首选项 - java - 安装jre删除你所有的,添加你想要使用的(JDK,没有JRE!)
在同一窗口中打开maven - 安装,添加您下载并在某处提取的mave安装 . (不要使用嵌入式maven安装,它有一些已知的错误)
就这样 . 你的项目不会受到荷兰问题的影响 . 希望有所帮助
您还可以确保Eclipse具有所有更新的更改 . 为此,请右键单击项目,然后按“刷新”菜单项 .
您需要在
mvn.ini
中指明JAVA_HOME
(它位于maven文件夹/bin
中),您的问题将消失 .解决这个问题非常简单....
如果您没有 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)您将看到3个单选按钮,他们将选择JRE或JDK作为选项 .
6)仔细查看单选按钮选项是否已选择 JRE 然后将其更改为 JDK .
7)单击“应用” .
而已...!!!