2

我在 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”)来解决此问题,但我想了解为什么它可以在一台计算机上运行而不是在另一个 - 我假设我的设置有问题?

我尝试了以下方法:

通过将“-vm C:\Program Files\Java\jdk1.6.0_25\bin\javaw.exe”添加到我的 eclipse.ini 文件中,确保 Eclipse 在 JDK 中运行。在 Eclipse 首选项 Java -> Installed JREs 下列出的唯一 JRE 是相同的 JDK。尝试在 Eclipse 首选项 Maven -> Installations between "Embedded (3.0.4)"、"External (3.0.4)" 和 "External (2.2.1)" 中切换 maven 版本

也许我需要在我的 maven settings.xml 文件中添加/更改一些东西?

任何建议,将不胜感激!

仅供参考,我正在使用 Eclipse Java EE Juno SR1 和 M2E 1.2.0。

4

3 回答 3

2

JAVA_HOME 应该指向在 settings.xml 文件中安装 java 的文件夹,确保你有 JAVA_HOME 属性并且它指向正确的文件夹

${JAVA_HOME}/../lib/tools.jar 不正确。它应该是 ${JAVA_HOME}/lib/tools.jar,因为 tools.jar 在 /lib 文件夹下,而 /lib 文件夹直接在 ${JAVA_HOME} 文件夹下

于 2013-02-08T03:45:56.757 回答
1

我还在我的 eclipse.ini 文件中添加了以下内容:

-vm
${JAVA_HOME}/bin

这似乎解决了我的问题。

注意:我正在运行 Eclipse 4.3 (Kepler)。

于 2014-07-03T22:42:19.310 回答
0

似乎有三个选项。前两个确保首先找到的 java 是 JDK 的 java,它们导致 eclipse 正确地将系统依赖项转换为 JDK 下的 jar。最后一种方法可以不要求每个用户通过特殊方式运行 eclipse,但如果您的开发环境与生产环境不是 100% 同步,则可能会产生影响。如果您希望 jdk.tools 1.6 存在,但您使用 1.7 或 1.8 进行了测试,您可能会感到惊讶。

  • 通过 eclipse.ini

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

  • 通过 pom

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

于 2015-07-06T18:02:56.553 回答