Создание Hadoop с Eclipse/Maven - Отсутствует артефакт jdk.tools:jdk.tools:jar:1.6

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

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

Ответ 1

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>

Смотрите, FAQ 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>

Ответ 2

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

Ответ 3

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

Ответ 4

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

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>

Ответ 5

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

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

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

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

Ответ 7

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

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

Ответ 8

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

Ответ 9

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

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

В пути buildpath → configure build → Libraries. Просто измените системную библиотеку JRE с JRE на JDK.

Ответ 10

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

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

Ответ 12

Хорошо, если вы используете ОС Windows

  • Перейдите в папку C:\Program Files\Java\jdk1.8.0_40\lib (версия jdk может отличаться для вас)

  • Удостоверьтесь, что tools.jar присутствует (в противном случае загрузите его)

  • Скопируйте этот путь "C:\Program Files\Java\jdk1.8.0_40"

  • В 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>
    
  • Восстановить и запустить! BINGO!