Побудова Hadoop за допомогою Eclipse / Maven - відсутній артефакт jdk.tools:jdk.tools:jar:1.6


74

Я намагаюсь імпортувати org.apache.hadoop cloudera's : hadoop-client: 2.0.0-cdh4.0.0 з репозиторію cdh4 maven у проект maven у плагіні eclipse 3.81, m2e, з jdk oracle oracle 1.7.0_05 на win7 за допомогою

<dependency>
    <groupId>org.apache.hadoop</groupId>
    <artifactId>hadoop-client</artifactId>
    <version>2.0.0-cdh4.0.0</version>
</dependency>

однак я отримую таку помилку:

The container 'Maven Dependencies' references non existing library 'C:\Users\MyUserId\.m2\repository\jdk\tools\jdk.tools\1.6\jdk.tools-1.6.jar'

більш конкретно, maven заявляє, що такий артефакт відсутній

Missing artifact jdk.tools:jdk.tools:jar:1.6

Як це вирішити?

Відповіді:


95

jdk.tools:jdk.tools(або com.sun:tools, або як ви його називаєте) - це файл JAR, який поширюється разом з JDK. Зазвичай ви додаєте його у такі проекти maven:

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <scope>system</scope>
    <systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>

Дивіться, поширені запитання щодо Maven щодо додавання залежностей доtools.jar

Або ви можете встановити вручну tools.jarв локальному сховищі, використовуючи:

mvn install:install-file -DgroupId=jdk.tools -DartifactId=jdk.tools -Dpackaging=jar -Dversion=1.6 -Dfile=tools.jar -DgeneratePom=true

а потім посилайтеся на нього, як це робив Клоудера, використовуючи:

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.6</version>
</dependency>

7
Можливо, хочеться додати, що вашу команду maven потрібно запускати з вашої папки jdk (версія 6) / lib.
Dan W

1
Для абсолютного шляху у вікнах: косу косу риску потрібно замінити на косу риску fwd - C: / Program Files / Java / jdk1.7.0_67 / lib / tools.jar
користувач 923227,

Це чудово .. але команда mvn install давала мені помилку збірки .. Додавання лапок для атрибутів спрацювало у мене ..
abhijitcaps

2
@abhijitcaps Якщо ви маєте на увазі tools.jarйого повний шлях у програмних файлах, тоді цей шлях містить пробіли і повинен бути обгорнутий лапками, так. Просто простіше перейти до цього каталогу і запустити mvn install:install-fileзвідти;)
npe

спробуйте: - - mvn install: install-file -DgroupId = jdk.tools -DartifactId = jdk.tools -Dversion = 1.6 -Dpackaging = jar -Dfile = "C: \ Program Files \ Java \ jdk \ lib \ tools.jar" або перевірте maven.apache.org/guides/mini/guide-3rd-party-jars-local.html
Йогеш Боркхаде

103

Проблема в підтримці Eclipse Maven, відповідне питання тут .

У розділі Eclipse для java.homeзмінної встановлено значення JRE, яке використовувалося для запуску Eclipse, а не для побудови JRE. Система JRE за замовчуванням C:\Program Filesне включає JDK, томуtools.jar не знайдена.

Щоб виправити проблему, потрібно запустити Eclipse за допомогою JRE з JDK, додавши щось подібне до eclipse.ini( раніше -vmargs !):

-vm
C:/<your_path_to_jdk170>/jre/bin/server/jvm.dll

Потім оновіть залежності Maven (Alt-F5) (Просто оновлення проекту недостатньо).


9
Дякую. Лише невеликий коментар для читачів: пам’ятайте, що -vmпотрібен розрив рядка між фактичним значенням параметра.
Даніель Фернандес

1
Щойно це сталося там, де Eclipse автоматично виявляв [jdk]\jre\bin\javaw.exe, і при такому запуску Maven не може знайти tools.jar. Потрібно було явно змінити Eclipse на запуск, використовуючи [jdk]\bin\javaw.exeдля Maven, щоб правильно знайти те, що він називає com.sun:tools:1.8jar
Alex

1
Я повинен наголосити на тому, що говорить @Alex: використовуйте смітник JDK, а не смітник JRE для в -vmin eclipse.ini. @rustyx show показує шлях до [jdk_path] / jre / bin і для мене саме це спричинило мою невдачу, не знайшовши tools.jar - хоча я вказав на javaw.exe, а не на dll. Коли я змінив його на C:/Program Files/Java/jdk1.8.0_51/bin/javaw.exe і почав затемнення, Alt-F5, і помилка зникла. Я був здивований, дізнавшись, що у JDK є два різні виконувані файли Java, з різними контрольними сумами.
Девід Лоттс

1
Якщо ви вкажете systemPath правильно , тобто, починаючи з "../", у вас не буде цієї проблеми. java.homeЗмінна Мавена повинна вказувати на JRE , а не на JDK. З JAVA_HOMEіншого боку, змінна середовища повинна вказувати на JDK.
rustyx

45 людей, які потрапили в цю помилку m2e, повинні проголосувати за неї в програмі відстеження помилок eclispe
bugs.eclipse.org/bugs/show_bug.cgi?id=432992

37

завдяки npe, додаючи

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

to pom.xml зробив свою справу.


10

Якщо ви можете жити без tools.jar і він включений лише як ланцюгова залежність, ви можете виключити його з порушувального проекту:

<dependency>
    <groupId>org.apache.ambari</groupId>
    <artifactId>ambari-metrics-common</artifactId>
    <version>2.1.0.0</version>
    <exclusions>
        <exclusion>
            <artifactId>jdk.tools</artifactId>
            <groupId>jdk.tools</groupId>
        </exclusion>
    </exclusions>
</dependency>

6

Це спрацювало для мене:

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

1

Я використовую нижче у своєму проекті MR.

<exclusions>
                <exclusion>
                    <artifactId>jdk.tools</artifactId>
                    <groupId>jdk.tools</groupId>
                </exclusion>
</exclusions>

Це не пояснює, куди це
подіти

0

можливо, система встановлює пакет jdk, але, можливо, деякі інструменти розробника або плагін.

Я знаходжу цю проблему в opensuse env. і я встановлюю java-1_6_0-openjdk-devel

проблема зникла ..


0

Я також зіткнувся з цією проблемою, оскільки я просто встановив JRE, а не з JDK . Отже, додавання залежності для jdk.tools не може мене виправити, оскільки tools.jar не існував у моєму каталозі $ {JAVA_HOME} / lib / .

Тепер я завантажив і встановив JDK, щоб це виправити.


0

Змініть набір встановлених JRE у своєму затемненні. Вікно> Налаштування> Java> Встановлені JRE, змініть розташування jre на% JAVA_HOME% / jre, але не щось на зразок C: \ Program Files \ Java \ jre7


0

Якщо jdk.tools присутній у сховищі .m2. Тим не менше ви отримуєте помилку приблизно так:

відсутній артефакт: jdk.tools ..... c: ... / jre / ..

У шляху побудови -> налаштувати шлях до збірки -> Бібліотеки. Просто змініть системну бібліотеку JRE з JRE на JDK.



-3

Гаразд, якщо ви використовуєте ОС Windows

  1. Перейдіть до C: \ Program Files \ Java \ jdk1.8.0_40 \ lib (версія jdk може відрізнятися для вас)

  2. Переконайтеся, що tools.jar присутній (інакше завантажте його)

  3. Скопіюйте цей шлях "C: \ Program Files \ Java \ jdk1.8.0_40"

  4. У pom.xml

    <dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.8.0_40</version>
    <scope>system</scope>
    <systemPath>C:/Program Files/Java/jdk1.8.0_40/lib/tools.jar</systemPath>
    </dependency>
    
  5. Перебудуйте і запустіть! БІНГО!


5
ніколи не додавай цього у свою пам, якщо ти працюєш з іншими людьми :)
Алекс
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.