Создание Hadoop с помощью Eclipse/Maven — отсутствует артефакт jdk.tools:jdk.tools:jar:1.6

Я пытаюсь импортировать org.apache.hadoop:hadoop-client:2.0.0-cdh4.0.0 из репозитория cdh4 maven в проекте maven в eclipse 3.81, плагин m2e, с oracle jdk 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

Как это решить?


person jvataman    schedule 20.06.2012    source источник


Ответы (12)


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

а затем сослаться на него, как это сделала Cloudera, используя:

<dependency>
    <groupId>jdk.tools</groupId>
    <artifactId>jdk.tools</artifactId>
    <version>1.6</version>
</dependency>
person npe    schedule 20.06.2012
comment
Возможно, вы захотите добавить, что вашу команду maven необходимо запускать из папки jdk (версия 6)/lib. - person Dan W; 20.02.2013
comment
Для абсолютного пути в Windows: обратную косую черту std необходимо заменить косой чертой fwd — C:/Program Files/Java/jdk1.7.0_67/lib/tools.jar - person user 923227; 02.05.2015
comment
Это здорово... но команда mvn install приводила к сбою сборки... Добавление кавычек для атрибутов сработало для меня... - person abhijitcaps; 26.10.2015
comment
@abhijitcaps Если вы имеете в виду tools.jar по его полному пути в Program Files, то этот путь содержит пробелы и должен быть заключен в кавычки, да. Проще просто перейти в этот каталог и запустить оттуда mvn install:install-file ;) - person npe; 26.10.2015
comment
попробуйте: - - 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 - person Yogesh Borkhade; 18.09.2017

Проблема заключается в поддержке 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) (просто обновить проект недостаточно).

person rustyx    schedule 17.04.2014
comment
Спасибо. Небольшой комментарий для читателей: помните, что разрыв строки между -vm и фактическим значением параметра обязателен. - person Daniel Fernández; 01.08.2014
comment
Только что это произошло, когда Eclipse автоматически обнаруживал [jdk]\jre\bin\javaw.exe, и при таком запуске Maven не может найти tools.jar. Необходимо явно изменить Eclipse для запуска с использованием [jdk]\bin\javaw.exe, чтобы Maven правильно нашел то, что он называет банкой com.sun:tools:1.8. - person Alex; 03.02.2015
comment
Я должен подчеркнуть то, что говорит @Alex: используйте корзину JDK, а не корзину JRE для -vm в eclipse.ini. @rustyx показывает путь к [jdk_path]/ jre /bin, и для меня это стало причиной того, что я не смог найти tools.jar, хотя я указал на javaw.exe, а не на dll. Когда я изменил его на C:/Program Files/Java/jdk1.8.0_51/bin/javaw.exe и запустил eclipse, Alt-F5, и ошибка исчезла. Я был удивлен, узнав, что в JDK есть два разных исполняемых файла javaw с разными контрольными суммами. - person David Lotts; 10.08.2015
comment
Если вы укажете systemPath правильно, т.е. начиная с ../, то у вас не будет этой проблемы. Переменная Maven java.home должна указывать на JRE., а не JDK. С другой стороны, переменная среды JAVA_HOME должна указывать на JDK. - person rustyx; 18.08.2015
comment
45 человек, которые столкнулись с этой ошибкой m2e, должны проголосовать за нее в системе отслеживания ошибок eclispe — bugs.eclipse.org/bugs/show_bug.cgi?id=432992 - person icyitscold; 17.11.2015
comment
следует отметить, что вам не нужно изменять eclipse.ini, но у вас есть возможность изменить переменную среды JAVA_HOME в ОС, чтобы она указывала на jre jdk. это исправило проблему для меня после перезапуска eclipse. - person loesak; 24.02.2016
comment
Сделал ли Maven --› Update Project... после добавления записи vm и ошибка исчезла из pom.xml - person somnathchakrabarti; 25.05.2017
comment
Через пять лет после ответа в другом SO Q&A (stackoverflow.com/a/23129154/1168041) эта ошибка все еще существует (сейчас 2019-04-05). Также хочу отметить, что будьте очень осторожны с дорожкой. 1) не используйте двойные кавычки вокруг строки. 2) Используйте косую черту даже в окнах. 3) Используйте jvm.dll 4) убедитесь, что вы указываете на jdk.../jre/.... 5) как указал @Daniel Fernández, после -vm нужен разрыв строки (а не --vm!) Для меня выигрышный путь - это C:/Program Files/Java/jdk1.8.0_201/jre/bin/server/jvm.dll - person leeyuiwah; 05.04.2019
comment
Это действительно помогло мне!. - person prashanth-g; 11.05.2019

благодаря 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 сделал свое дело.

person jvataman    schedule 20.06.2012

Если вы можете жить без 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>
person Adam LaStrange    schedule 09.09.2016

Это сработало для меня:

    <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>
person Ravi Macha    schedule 22.10.2015

Я использую ниже в своем проекте MR.

<exclusions>
                <exclusion>
                    <artifactId>jdk.tools</artifactId>
                    <groupId>jdk.tools</groupId>
                </exclusion>
</exclusions>
person Suman    schedule 26.04.2016
comment
Это не объясняет, куда поставить это - person MikeKulls; 20.12.2019

возможно, система установит пакет jdk, но, возможно, какие-то инструменты разработки или плагин.

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

проблема исчезла..

person liuyang1    schedule 12.03.2014

Я также столкнулся с этой проблемой, потому что только что установил JRE, а не JDK. Таким образом, добавление зависимости для jdk.tools не может исправить для меня, потому что tools.jar не существует в моей ${JAVA_HOME}/lib/ каталог.

Теперь я скачал и установил JDK, чтобы исправить это.

person Cataclysm    schedule 21.11.2014

Измените набор установленных JRE в вашем eclipse. Окно > Настройки > Java > Установленные JRE, измените расположение jre на %JAVA_HOME%/jre, но не на что-то вроде C:\Program Files\Java\jre7

person Sondy Woo    schedule 23.01.2015

Если jdk.tools присутствует в репозитории .m2. Тем не менее вы получаете ошибку примерно так:

отсутствует артефакт: jdk.tools.....c:.../jre/..

В пути сборки-> настроить путь сборки--> Библиотеки. Просто измените системную библиотеку JRE с JRE на JDK.

person Divya Rakshu    schedule 09.10.2015

пытаться :

mvn install:install-file -DgroupId=jdk.tools -DartifactId=jdk.tools -Dversion=1.6 -Dpackaging=jar -Dfile="C:\Program Files\Java\jdk\lib\tools.jar"< /сильный>

также проверьте: http://maven.apache.org/guides/mini/guide-3rd-party-jars-local.html

person Yogesh Borkhade    schedule 18.09.2017

Хорошо, если вы используете ОС 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. В пом.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. Восстанови и беги! БИНГО!

person Lokesh    schedule 20.07.2015
comment
никогда не добавляйте это в свой помпон, если вы работаете с другими людьми :) - person Alex; 30.07.2015