使用Eclipse和Maven丢失了1.6.jar的工具

时间:2011-08-27 20:52:53

标签: java eclipse maven tools.jar

我试图在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

10 个答案:

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

另见Eclipse Maven Plugin Configuration Problem

答案 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)

回声@Gopal Ramakrishnan。我在env路径(windows OS)中遇到了同样的问题。它有&#34; C:\ ProgramData \ Oracle \ Java \ javapath&#34;其中有java.exe,因此在启动eclipse时会影响实际的jdk路径。只需删除即可解决问题。我很确定&#34; C:\ ProgramData \ Oracle \ Java \ javapath&#34;被oracle&#34; sql developer&#34; ...

悄然添加

答案 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实际上并不存在