我正试图在Eclipse中使用Maven运行一个项目,但我在下面得到这个错误。tools.jar
在JDK的lib
文件夹中,但tools-1.6.jar
似乎不存在于我的计算机上。我正在使用JDK 1.7,我的JAVA_HOME
指向该文件夹(我的eclipse.ini
),有人知道我可以在哪里得到这个文件,或者我可能做错了什么?
容器'Maven Dependencies'引用了不存在的库C:Userssejohnson.m2repositorycomsuntools1.6tools-1.6.jar
tools-x.y.z.jar应该由JDK提供。
通过在eclipse.ini中添加-vm选项来确保eclipse是由JDK而不是JRE运行的。
例如:-vm
C:Program FilesJavajdk1.6.0_26binjavaw
-vm
后面的新行是至关重要的。
应该在
的正上方-vmargs
请参见Eclipse Maven Plugin Configuration Problem
我遇到了完全相同的问题,并最终将以下依赖项添加到pom文件中:
<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>${java.version}</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
这解决了问题,并使tools.jar
可用于QueryDSL插件在我的项目。希望这对你有所帮助。注意,请确保使用JDK版本而不是JRE。
编辑:最近注意到,当我迁移到新的开发平台时,问题再次出现,在我的情况下是Ubuntu 12.10。修复方法是将${JAVA_HOME}/bin
添加到$PATH
这可能是您的eclipse默认使用32位版本的jre。如果您将JAVA_HOME设置为C:Program FilesJava jdk1.6.0_21bin,并且您运行的是32位版本的eclipse,那么最终将使用类似C:Program Files (x86)Javajre6 bin的内容。
一旦你修复了你的JDK问题您需要在快捷方式的末尾传递它vm"C: Program Files Java (x86) jdk1.6.0_31 bin "
或者修复JAVA_HOME
其他建议是确保您的eclipse使用的是jdk而不是jrehttp://gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx
如果您搜索tools.jar或运行另一个有此常见maven依赖问题的项目,您将找到其他帖子。
您可以检查您的pom.xml中的工具依赖关系吗?mvnrepository.com是一个很好的源代码,最后你的项目在eclipse之外编译吗?mvn clean compile
工作在dos盒或shell?如果是这样,也许您只需要用mvn eclipse:eclipse
重新生成eclipse项目文件,然后在eclipse
中刷新您的项目。任何公共存储库都不提供tools.jar
(据我所知)。如果您的pom.xml
引用本地存储库中的文件,则必须自己安装它。您正在使用的pom.xml显然期望有人在可访问的Maven存储库(例如,到公司中央Maven存储库管理器,如Nexus)中创建/安装tools-1.6.jar。
如果不适合您,请尝试更改依赖项,就像Maven faq中解释的那样。
除了上述所有步骤(这可能意味着诊断问题并最终提供适当的解决方案的不同步骤)之外,我首先检入命令行(也就是说,在Eclipse运行时之外)。从命令行执行一个简单的"mvn clean install"会得到以下结果:
- 确定你是否正确设置了java可执行文件(因为它们是所有java应用程序使用的默认设置,当然包括eclipse,
- 确定您的maven版本通过JDK配置充分解决了tools*.jar需求
使用这两个事实可以排除Java安装和Maven安装级别的问题。然后,您可以继续在命令行中使用与Eclipse相同的设置(JAVA JDK HOME、MAVEN HOME),正如上面的其他答案(特别是brimstedt和josh的答案)所详细解释的那样。
我遇到了同样的问题,结果是我的POM文件中的一个依赖项正在传递地将依赖项添加到jdk中。我不需要的tools jar(并且导致了Eclipse Maven插件的问题)。我的解决方案是将它从有问题的依赖中排除,像这样:
<dependency>
<groupId>it.unimi.di</groupId>
<artifactId>mg4j-big</artifactId>
<version>${mg4j-big.version}</version>
<exclusions>
<exclusion>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
</exclusion>
</exclusions>
</dependency>
尝试查找正在传递导入jdk的依赖项。就像我上面所做的那样。这应该能解决你的问题。
遇到同样的问题,我不得不在eclipse中手动添加tools.jar:首选项-> Java ->已安装JREs ->选择jre ->编辑->添加外部jar ->查找并选择tools.jar ->完成。
如果您遇到这个构建问题,这里有另一个选择。我有同样的构建问题,我尝试了上面所有的建议,问题仍然存在。然后我注意到我的系统路径有以下"C:ProgramDataOracleJavajavapath"作为第一项。
我不确定是哪个程序安装的。当我检查文件夹时,它只有一些链接(快捷键)。我将其从系统路径中删除,并且解决了构建错误。希望这能帮助到有同样情况的人。
回复@Gopal Ramakrishnan。我有同样的问题在环境路径(windows操作系统)。它有"C:ProgramDataOracleJavajavapath",其中有Java .exe,因此在启动eclipse时影响了实际的jdk路径。简单地删除,解决了问题。我很确定"C:ProgramDataOracleJavajavapath"是由Oracle"sql developer"悄悄添加的…
在我的例子中,我在pom.xml
中有这个依赖项<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.6.0</version>
<scope>system</scope>
<systemPath>${env.JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>
但是JAVA_HOME在Eclipse启动时设置为JRE而不是JDK。
因此tools.jar实际上并不存在
手动从maven中移除工件:
- 进入"依赖层次";xml 选项卡
- 过滤jdk。(jdk.tools:1.6 [system])
- 右键单击jdk。工具,点击"排除Maven工件"
错误将被解决