我在Eclipse中有一个maven项目,我正在使用一些hadoop库(hadoop-common,hadoop-auth,hadoop-hdfs),这些项目依赖于jdk.tools。当我在另一台机器上检查这个项目时,它工作正常,但在我的pom.xml上抱怨“缺少工件jdk.tools:jdk:tools:jar:1.6”。我可以通过手动添加依赖项并在我的本地驱动器上指定文件来解决这个问题(例如“$ {JAVA_HOME} /../ lib / tools.jar”),但我想了解为什么它可以在一台计算机上运行而不是在另一个 - 我假设我的设置有问题?
我尝试了以下内容:
通过在我的eclipse.ini文件中添加“-vm C:\ Program Files \ Java \ jdk1.6.0_25 \ bin \ javaw.exe”确保Eclipse在JDK中运行。 Eclipse首选项Java中列出的唯一JRE - >已安装的JRE与JDK相同。 在Eclipse首选项Maven中尝试切换maven版本 - > “Embedded(3.0.4)”,“External(3.0.4)”和“External(2.2.1)”之间的安装
我可能需要在maven settings.xml文件中添加/更改某些内容吗?
任何建议都将不胜感激!
仅供参考我使用的是Eclipse Java EE Juno SR1和M2E 1.2.0。
答案 0 :(得分:2)
JAVA_HOME应该指向安装java的文件夹 在settings.xml文件中,确保您具有JAVA_HOME属性并指向正确的文件夹
$ {JAVA_HOME} /../ lib / tools.jar不正确。它应该是$ {JAVA_HOME} /lib/tools.jar,因为tools.jar位于/ lib文件夹下,而/ lib文件夹位于$ {JAVA_HOME}文件夹下
答案 1 :(得分:1)
我还在eclipse.ini文件中添加了以下内容:
-vm
${JAVA_HOME}/bin
这似乎解决了我的问题。
注意:我正在运行Eclipse 4.3(Kepler)。
答案 2 :(得分:0)
好像有三个选项。前两个确保第一个找到的java是JDK的java,它们导致eclipse将系统依赖性正确地转换为JDK下的jar。最后一个允许一种不要求每个用户通过特殊方式运行eclipse的方法,但如果您的开发环境不与您的生产环境100%同步,则可能会产生影响。如果您希望jdk.tools 1.6出现但是您的测试是1.7或1.8,那么您可能会感到惊讶。
--launcher.appendVmargs
-vm
c:/code/Java/jdk1.8.0_40/jre/bin/server/jvm.dll
-vmargs
-Dosgi.requiredJavaVersion=1.6
set PATH=PATH-TO-JDK\bin;%PATH%
PATH-TO-ECLIPSE\eclipse.exe
add tools.jar as jdk.tools:jdk.tools:<JDK version> to your local or private shared repo (nexus/artefactory etc)
add dependency to your project