繁体   English   中英

在 java 项目的 pom.xml 中,我缺少工件 jdk.tools:jdk.tools:jar:1.6 错误

[英]In the pom.xml for a java project, I get missing artifact jdk.tools:jdk.tools:jar:1.6 error

我想我知道如何解决这个问题,除了:我不知道在 pom 中的哪个特定版本被引用(我没有明确地看到它)并且我看到的解决方案是添加这个依赖项:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar</systemPath>
 </dependency>

但是我想用com.oracle,Windows上的jdk目录是jdk1.8。

那么有没有办法让 pom “想要”我机器上实际拥有的工具版本?

我终于以正确的方式解决了这个问题。

当使用 JRE 而不是 JDK 启动 eclipse 时会发生这种情况,因为tools.jar不在 JRE 中。 基于该断言,尝试安装 JDK。 如果它已经安装,请检查您的Path是否有 JDK 路径而不是 JRE 路径。

注意,最新版本的 java 似乎在Path中添加了以下目录: C:\ProgramData\Oracle\Java\javapath 它包含可能链接到 JRE 的快捷方式。 您需要删除它并添加指向 JDK bin 文件夹的链接。 (例如C:\Program Files\Java\jdk1.8.0_66\bin

请注意,您可能需要重新启动计算机才能使Path中的更改对 eclipse 启动有效(我真的不明白为什么我必须这样做,但我确实这样做了)。

另请注意,Java 更新可能会将javapath重新添加到您的 PATH 中。 因此,您可能不想使用自动更新,而是手动更新 JDK 并在安装后调整路径。 它有点重,但确实有效。

对于将来遇到此问题的任何人,请继续阅读以获取更优雅的解决方案:

原因

此问题出现在以下两种情况之一中:

  1. 您没有安装和配置 JDK; 或者

  2. 您已经安装了 JDK 和 JRE,并且 JRE 优先于 JDK 路径。

解决方案

正如“现实世界中的 Hadoop”团队在此链接中所解释的那样,您只需将依赖项添加到pom.xml文件中的tools.jar即可。

<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7.0_05</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

如果错误仍然存​​在,则只需将tools.jar的路径更改为绝对路径,如下所示:

<systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>

我认为解决此问题的最佳方法是将以下配置添加到您的 eclipse.ini 中,以确保它在运行 eclipse 时使用 javaw 的 jdk 副本,而不是解决问题的 JRE 副本,这似乎是正确的方法解决问题

-vm
C:/Program Files/Java/jdk1.8.0_73/bin/javaw.exe

您只需要将依赖项添加到 pom.xml 文件中的 tools.jar 即可。

<dependency>
<groupId>jdk.tools</groupId>
<artifactId>jdk.tools</artifactId>
<version>1.7.0_05</version>
<scope>system</scope>
<systemPath>${JAVA_HOME}/lib/tools.jar</systemPath>
</dependency>

如果错误仍然存​​在,请将 tools.jar 的路径更改为绝对路径,如下所示:

<systemPath>C:/Program Files/Java/jdk1.8.0_65/lib/tools.jar</systemPath>

您可以使用“java.home”环境变量:

<dependency>
   <groupId>com.sun</groupId>
   <artifactId>tools</artifactId>
   <version>1.6</version>
   <scope>system</scope>
   <systemPath>${java.home}/lib/tools.jar</systemPath>
</dependency>

请看一下: https ://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#System_Dependencies

我在eclipse中找到了解决这个问题的方法。

在日食中,

导航到窗口 -> 首选项

在左侧窗格中,展开 Java,您将找到“已安装的 JRE”条目

选择它,您应该能够看到引用 JRE 文件夹而不是 JDK 文件夹的 JRE 条目。

选择条目进行编辑,然后将其重定向到 JDK 文件夹并单击应用。

这立即解决了我的问题。

为了那些在 2021 年(在 OP 之后很多年)遇到此错误并使用现代 openjdk 发行版的人的利益,可以将jdk.tools从单个依赖项中排除,如下所示:

<dependency>
    <groupId>org.apache.systemds</groupId>
    <artifactId>systemds</artifactId>
    <version>2.1.0</version>
    <exclusions>
        <exclusion>
            <artifactId>jdk.tools</artifactId>
            <groupId>jdk.tools</groupId>
        </exclusion>
    </exclusions>
</dependency>

诚然,我不确定这样做的一般后果,但它在我需要它的情况下很有用(例如,在运行mvn dependency:copy-dependencies时)

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.7</version>
    <scope>system</scope>
    <systemPath>C:/jdk1.7.0_51/lib/tools.jar</systemPath>
</dependency>

将此代码添加到依赖项 pom.xml:

<dependency>
   <groupId>org.apache.solr</groupId>
   <artifactId>solr-core</artifactId>
   <version>4.5.1</version>
   <exclusions>
      <exclusion>
         <artifactId>jdk.tools</artifactId>
         <groupId>jdk.tools</groupId>
      </exclusion>
   </exclusions>
</dependency>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM