Подтвердить что ты не робот

Отсутствует артефакт com.sun: tools: jar

Я слежу за учебником, но я застрял после того, как импортировал проект playn, используя Maven. Я использую Eclipse Indigo, работающий на 64-битной Windows 7.

Все импортированные проекты имеют одинаковую ошибку:

Missing Artifact com.sun:tools:jar in all the pom.xml files.

После нескольких часов поиска в форумах я пробовал:

Установка последней версии Java 1.6.029 Изменение переменной среды JAVA_HOME для указания на \program files\Java\jdk1.6_029 Изменение предпочтений Java Eclipse Java для использования JRE jdk1.6_029.

Мне бы очень хотелось поэкспериментировать с плейн, но почему есть несколько сообщений, которые, как мне кажется, не могут найти ответ на решение conenus. Некоторые люди говорят, что Sun удалила что-то из 64-битного jdk, другие говорят, что вы должны отредактировать свои xml файлы, многие сказали, что вы изменили свой JAVA_HOME, а другой сказал, что вам нужно изменить параметры виртуальной машины для Eclipse.

Любая помощь по расчистке этого вопроса будет оценена и, возможно, полезна для многих, поскольку здесь нет особо странной настройки.

(редактировать) Вот первый pom.xml в первом проекте. Ошибка Eclipse в строке, которая гласит:

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <parent>
    <groupId>com.googlecode.playn</groupId>
    <artifactId>playn-project</artifactId>
    <version>1.1-SNAPSHOT</version>
  </parent>

  <artifactId>playn-android</artifactId>
  <name>PlayN Android</name>
  <packaging>jar</packaging>

  <repositories>
  </repositories>

  <dependencies>
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-core</artifactId>
      <version>${project.version}</version>
    </dependency>

    <!-- needed because Android uses the same JSON code as playn-java;
         that should be factored into a library shared by both backends -->
    <dependency>
      <groupId>com.googlecode.playn</groupId>
      <artifactId>playn-java</artifactId>
      <version>${project.version}</version>
    </dependency>

    <dependency>
      <groupId>com.google.android</groupId>
      <artifactId>android</artifactId>
      <version>${android.version}</version>
      <scope>provided</scope>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <sourceDirectory>src</sourceDirectory>
  </build>
</project>
4b9b3361

Ответ 1

Я только что разместил на этом вопросе об этой же проблеме и о том, как я ее разрешил, но я буду вставлять (и расширять) ее здесь, так как это кажется более актуальным.

У меня была такая же проблема при использовании Eclipse в Windows 7, даже когда я удалил JRE из списка JRE в настройках Eclipse и просто там был JDK.

То, что мне пришлось сделать (как вы упомянули в своем вопросе), было изменение командной строки для ярлыка, который я использую для запуска Eclipse, чтобы добавить к нему аргумент -vm следующим образом:

-vm "T:\Program Files\Java\jdk1.6.0_26\bin"

Конечно, вы должны настроить это, чтобы указать на каталог bin вашей установки JDK. Это означает, что сам Eclipse запускается с использованием JDK вместо JRE, а затем он может правильно найти tools.jar.

Я считаю, что это связано с тем, как Eclipse находит JRE по умолчанию, когда ни один не указан. Я предполагаю, что он предпочитает JRE над JDK (почему, я не знаю), и идет на первую совместимую JRE, которую он находит. И если это происходит из разделов реестра Windows, таких как, например, Vladiat0r, он ищет ключ HKLM\Software\JavaSoft\Java Runtime Environment, а не ключ HKLM\Software\JavaSoft\Java Development Kit.

Ответ 2

Я столкнулся с той же проблемой, и способ, которым я смог ее решить, - добавить расположение зависимостей tools.jar в pom.xml. Например:

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

Убедитесь, что вы изменили <systemPath> на место, где когда-либо находится файл tools.jar.

Ответ 3

У меня была такая же проблема при разработке простого приложения для веб-сервисов, в моем случае мне пришлось добавить подключаемый файл codehous, чтобы получить библиотеки jaxws. Тем не менее, maven pom продолжал спрашивать о файле jar tools.

Я должен сказать, что приведенные выше комментарии верны, вы можете включить следующую запись в файл 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>

Но что произойдет, когда вам придется развертывать экземпляр проекта? Вы можете заменить путь ссылкой на переменную системной среды, но это по-прежнему выглядит не очень хорошо, по крайней мере для меня.

Я нашел другое решение в комментарии StackOverflow:

Проблема с артефактом Maven 3

<dependency>
    <groupId>org.apache.struts</groupId>
    <artifactId>struts2-core</artifactId>
    <version>${struts2.version}</version>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.sun</groupId>
        </exclusion>
    </exclusions>
</dependency>

Они предлагают включить инструкцию исключения для инструментальной банки, и она работает. Итак, суммируя: вы можете включить правило исключения в свою зависимость и избежать проблемы с tool.jar:

 <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>

Ответ 4

Ни один из других ответов не сделал это для меня. Что нужно было проверить для "Иерархии зависимостей" pom.xml в eclipse, где предоставление "инструментов" фильтра показало, что я имел реальную зависимость от tools.jar:

Eclipse View

Итак, виновником я был:

<dependency>
    <groupId>com.github.markusbernhardt</groupId>
    <artifactId>robotframework-selenium2library-java</artifactId>
    <version>1.4.0.7</version>
    <scope>test</scope>
</dependency>

Добавление исключения исключает его:

<dependency>
    <groupId>com.github.markusbernhardt</groupId>
    <artifactId>robotframework-selenium2library-java</artifactId>
    <version>1.4.0.7</version>
    <scope>test</scope>
    <exclusions>
        <exclusion>
            <artifactId>tools</artifactId>
            <groupId>com.sun</groupId>
        </exclusion>
    </exclusions>  
</dependency>

У исключений, похоже, нет никаких недостатков.

Ответ 5

Я решил эту проблему в настройках Eclipse 4.3 - только добавив библиотеки JDK в библиотеки JRE.

Go windows → settings → Java → установленные JREs → выберите JDK и нажмите Edit → щелкните Add External JARs и добавьте tools.jar(помещенный в JDK/lib)

Ответ 6

То же самое со мной и Windows 7. В итоге я добавил две строки в eclipse.ini:

-vm 
C:\Program Files\Java\jdk1.6.0_35\bin

Я попытался использовать %JAVA_HOME% там, но это не сработало.

Ответ 8

Проверьте версию JDK на вашем компьютере, и в pom.xml оба должны быть одинаковыми

<dependency>
    <groupId>com.sun</groupId>
    <artifactId>tools</artifactId>
    <version>1.8</version>
    <scope>system</scope>
    <systemPath>C:\Program Files\Java\jdk1.8.0_60\lib\tools.jar</systemPath>
</dependency>

Ответ 9

На эффективной вкладке POM файлов pom я вижу следующий путь вывода: C:\Program Files\Java\jre6/../lib/tools.jar, и я думаю, что это не допустимый путь в Windows. Я попытался скопировать tools.jar в папку jre6/lib, а также в Java/lib без успеха.

Значение "C:\Program Files\Java\jre6" происходит из реестра

HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6.0_30
HKEY_LOCAL_MACHINE\SOFTWARE\JavaSoft\Java Runtime Environment\1.6

И установите ключ JavaHome, где установлен JDK JRE. Затем все ошибки компилятора исчезли.

Повторная установка JDK не исправила его. Установка переменной среды JAVA_HOME или java.home не помогла.

Другая альтернатива, которую я видел, заключается в добавлении зависимости с правильным путем в каждом файле pom xml, но в playn-образцах есть много файлов, которые являются смешной болью, которую нужно редактировать.

Это эффективные результаты POM, которые показывают путь WRONG!

 <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6</version>
      <scope>system</scope>
      <systemPath>C:\Program Files\Java\jre6/../lib/tools.jar</systemPath>
      <optional>true</optional>
    </dependency>

Ответ 10

Добавьте этот dependecy в файл pom.xml. Надеюсь, что эта помощь. В свойстве <systemPath> вы должны написать свой путь jdk lib..

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

Ответ 11

Как утверждают другие плакаты, проблема здесь связана с JRE, что затмение использует неспособность найти инструмент jar. Я решил проблему, перейдя в другое направление, чем то, что было сказано выше, и это было из-за того, что мои проекты и окружающая среда.

Для Eclipse 4.5 требуется, по крайней мере, Java 7 для среды исполнения, поэтому у меня установлена ​​моя система для использования Java 8 JRE, расположенной в C:\java\jre1.8.0_45.

Далее, я использую POM файл, который предполагает, что я запускаю Java JDK.

  <profiles>
    <profile>
      <id>default-profile</id>
      <activation>
        <activeByDefault>true</activeByDefault>
        <file>
          <exists>${java.home}/../lib/tools.jar</exists>
        </file>
      </activation>
      <properties>
        <toolsjar>${java.home}/../lib/tools.jar</toolsjar>
      </properties>
    </profile>
    <profile>
      <id>osx_profile</id>
      <activation>
        <activeByDefault>false</activeByDefault>
        <os>
          <family>mac</family>
        </os>
      </activation>
      <properties>
        <toolsjar>${java.home}/../Classes/classes.jar</toolsjar>
      </properties>
    </profile>
  </profiles>

  <dependencies>
    <dependency>
      <groupId>com.sun</groupId>
      <artifactId>tools</artifactId>
      <version>1.6.0</version>
      <scope>system</scope>
      <systemPath>${toolsjar}</systemPath>
    </dependency>
  </dependencies>

Мне не разрешено изменять POM файл, поэтому мне пришлось сделать кое-что покере. Я скопировал tools.jar из своего Java 6 JDK, создал каталог C:\java\lib и вставил его там. Затем я перезапустил eclipse и очистил свой проект. И ошибки VOILA исчезли.

Это не изящное решение, и я думаю, что правильным решением было бы изменить способ настройки POM, но, поскольку я не мог, это работает.

Ответ 12

Я получил похожую ошибку. Это потому, что JDK не правильно установлен в Eclipse. Cucumber нужен JDK вместе с JRE, поэтому добавьте ниже зависимость в вашем pom.xml

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

Ответ 13

У меня была такая же проблема на Windows 7 и Eclipse 3.7 Мне удалось исправить это, запустив

eclipse.exe -vm "D:\JDK6\bin"

Вы можете запустить cmd и запустить такое затмение, или вы можете отредактировать ярлык и добавить -vm "D:\JDK6\bin" в качестве аргумента в "целевой раздел".

Как побочный элемент, я также попытался добавить -vm "D:\JDK6\bin" в eclipse.ini, но не работал. И добавление JRE6 не будет работать, так как оно не содержит tools.jar в каталоге "lib". Только JDK делает.

Ответ 14

Закончено с помощью исправления eclipse.ini:

openFile
-vm (Your Java Home JDK here)

Например, -vm C:\Java\JDK\1.6.

Пришлось также изменить JRE на JDK:

В Eclipse IDE перейдите к:

  • Окно → Настройки → Установленные JRE
  • Нажмите "Добавить" (чтобы найти новый JRE)
  • Выберите стандартный JVM → следующий
  • Нажмите "Directory", чтобы найти домашнюю страницу JRE, поместите JDK_INSTALL_LOCATION и закончите.
  • Перейдите в проект java Properties → Java build Path → Libraries → выберите JRE → Edit → выберите Workspace по умолчанию JRE → finish
  • Сделайте полную очистку рабочей области с помощью проекта → clean.

Ответ 15

После опроса всех вышеперечисленных я все еще имел ту же проблему.

  • Переменная окружения PATH указывает на JDK 1.7\bin
  • Моя переменная окружения JAVA_HOME указана на JDK 1.7
  • У моего eclipse.ini была запись javaw -vm, указывающая на JDK 1.7
  • У моего предпочтения eclipse был JDK 1.7 как установленная JRE.
  • В моем пути построения проекта использовался JDK 1.7.

Затем я попробовал следующее:

  • Откройте командную строку и введите java -version. Это показало мне версию 1.8 JRE.

  • Откройте командную строку и перейдите в папку каталога JDK 1.7 bin и введите java -версию. На этот раз он показал правильно 1.7.

Затем, после копания в нескольких местах, я обнаружил, что помимо указанных выше мест есть дополнительные места для выполнения Java.

Реестр

Существует также раздел реестра, в котором местоположение JRE указано в

HKLM\Software\Javasoft\Version

Я изменил записи здесь, чтобы указать на JDK 1.7

ProgramData​​STRONG >

Каталог "C:\ProgramData\Oracle\Java\javapath" присутствует в переменной среды PATH и содержит ярлыки для java, javaw и т.д. Целью этих ярлыков были все JRE 1.8. (Это я считаю основной проблемой) Я изменил ярлыки, чтобы указать на правильный JDK exe.

Как только все это было сделано. Я открыл eclipse, все ошибки jdk.tools pom.xml исчезли.

Ответ 16

У меня возникла эта проблема, и оказалось, что JBossDevStudio 9.1 в Windows - это 32-разрядная программа. Eclipse и, следовательно, JBossDevStudio, не работают с неправильным типом JVM. Для 64-битного eclipse требуется 64-разрядная JVM, 32-битное eclipse нуждается в 32-разрядной JVM. Таким образом, настройка Eclipse для работы с моим установленным 64-разрядным JDK не сработала.

Установка 32-битного JDK и запуск Eclipse из этой проблемы.

Как минимум для одного из моих проектов, другой, где я пытался настроить JDK во время выполнения в свойствах проекта Eclipse, по-прежнему не работает.

Ответ 17

Я решил проблему, удалив JRE из своей системы и оставив JDK. Повторной установки JDK недостаточно, потому что установщик Oracle JDK устанавливает как JDK, так и JRE

Кстати, мне кажется, что эта ошибка отвечает за проблемы: java.home вместо Eclipse JRE используется вместо JRE

Ответ 18

В моем случае я выполнял сборку Maven из конфигураций запуска Eclipse. Даже после изменения конфигурации JRE по умолчанию, указывающей на папку установки JDK, проблема не была решена для меня. Причина в том, что в Maven Build - Run Configuration есть вкладка JRE (см. Изображение ниже). И это все еще указывало на мою установку JRE. Я изменил его так, чтобы он указывал на установку JDK, а затем запустил сборку Maven. На этот раз это сработало. введите описание изображения здесь

Ответ 19

Изменение относительного расположения ${java.home}/../lib/tools.jar до абсолютного пути из C:\Program Files\Java\jdk1.6.0_29\lib\tools.jar работает для меня.

Вам нужно только изменить его в playn/pom.xml.

Теперь для playn-samples, Vladiator прав, что слишком много файлов pom для изменения.

Ответ 20

Если вы используете openjdk, вам необходимо установить пакет openjdk-6-sdk.