我试图在Eclipse中使用Maven运行一个项目,但我在下面收到此错误。 tools.jar
位于JDK的lib
文件夹中,但我的计算机上似乎不存在tools-1.6.jar
。我使用的是JDK 1.7,我的JAVA_HOME
指向该文件夹(就像我的eclipse.ini
一样)任何人都知道我可以在哪里获取此文件或我可能做错了什么?
容器'Maven Dependencies'引用不存在的库C:\Users\sejohnson\.m2\repository\com\sun\tools\1.6\tools-1.6.jar
答案 0 :(得分:15)
tools-x.y.z.jar应由JDK提供。
确保eclipse是由JDK运行的,而不是通过在eclipse.ini中添加-vm选项而由JRE运行。
例如:
-vm
C:\Program Files\Java\jdk1.6.0_26\bin\javaw
-vm
之后的新行至关重要。
它应该在正上方
-vmargs
答案 1 :(得分:13)
我遇到了完全相同的问题,最终将以下依赖项添加到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
答案 2 :(得分:5)
可能是你的日食违反你的32位版本的jre。如果您在JAVA_HOME设置为C:\ Program Files \ Java \ jdk1.6.0_21 \ bin并且运行32位版本的eclipse时执行所有操作,则最终将使用类似C:\ Program Files(x86)\ Java \的内容JRE6 \ bin中。
一旦修复了jdk问题 您需要在快捷方式的末尾传递它 -vm“C:\ Program Files(x86)\ Java \ jdk1.6.0_31 \ bin”
或修复您的JAVA_HOME
其他建议是确保你的日食使用的是jdk而不是jre http://gamefromscratch.com/post/2011/11/15/Telling-Eclipse-to-use-the-JDK-instead-of-JRE.aspx
如果您使用此常见的maven依赖问题搜索tools.jar或playn另一个项目,您会找到其他帖子。
答案 3 :(得分:1)
你能检查你的pom.xml有关工具的依赖关系吗?一个很好的来源是mvnrepository.com,最后你的项目是否在eclipse之外编译? mvn clean compile
是否可以在dos框或shell中工作?如果它可能你只需要用mvn eclipse:eclipse
重新生成eclipse项目文件,然后在eclipse中刷新你的项目
答案 4 :(得分:1)
tools.jar
未在任何公共存储库中提供(据我所知)。如果您的pom.xml
引用本地存储库中的文件,则必须由您自己安装。您正在使用的pom.xml显然希望有人在可加入的Maven存储库中创建/安装了tools-1.6.jar(例如,发送到公司中央maven存储库管理器,如Nexus)。
如果这不适合您,请尝试更改依赖项,如Maven FAQs中所述。
答案 5 :(得分:1)
我遇到了同样的问题,结果是我的POM文件中的一个依赖项传递性地将依赖项添加到jdk.tools jar中,这是我不需要的(并且导致了Eclipse Maven的问题)插入)。我的解决方案是将其排除在有问题的依赖关系之外:
SET SERVEROUTPUT ON;
DECLARE
TYPE t_list IS TABLE OF VARCHAR2 (30);
l_list t_list := t_list ('X0', 'X1', 'X2');
e_user_already_exists EXCEPTION;
PRAGMA EXCEPTION_INIT (e_user_already_exists, -1920);
BEGIN
FOR l_iterator IN 1 .. l_list.COUNT LOOP
DBMS_OUTPUT.PUT_LINE ('Creating user ' || l_list (l_iterator));
BEGIN
EXECUTE IMMEDIATE 'CREATE USER "' || l_list (l_iterator) || '" PROFILE DEFAULT IDENTIFIED BY "WELCOME" ACCOUNT UNLOCK';
EXECUTE IMMEDIATE 'GRANT SOME_APPLICATION_ROLE TO ' || l_list (l_iterator);
EXCEPTION
WHEN e_user_already_exists THEN
DBMS_OUTPUT.PUT_LINE ('User exists, ignored');
WHEN OTHERS THEN
RAISE;
END;
END LOOP;
END;
/
尝试查找传递导入jdk.tools jar的依赖项,并像上面那样排除。这应该可以解决你的问题。
答案 6 :(得分:0)
遇到同样的问题,我不得不在eclipse中手动添加tools.jar: 偏好 - &gt; Java - &gt;已安装的JRE - &gt;选择jre - &gt;编辑 - &gt;添加外部JAR - &gt;查找并选择tools.jar - &gt;完。 现在它有效。
答案 7 :(得分:0)
如果您遇到此构建问题,这是另一个选项。我有相同的构建问题,我尝试了所有上述建议,问题仍然存在。然后我注意到我的系统路径有以下“C:\ ProgramData \ Oracle \ Java \ javapath”作为第一项。
我不确定哪个程序安装了它。当我检查文件夹时,它只有一些链接(快捷方式)。我从系统路径中删除了它,并解决了构建错误。希望这能帮助处于同样情况的其他人。
答案 8 :(得分:0)
答案 9 :(得分:0)
在我看来,我发现我在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实际上并不存在