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