2015-10-20 4 views
7

При добавлении Arquillian к Maven построить я получаю вышеуказанное исключение в Eclipse:Missing артефакт "sun.jdk: JConsole: баночка: JDK"

Missing артефакт sun.jdk: Jconsole: фляги: JDK

<dependency> 
     <groupId>org.jboss.arquillian.junit</groupId> 
     <artifactId>arquillian-junit-container</artifactId> 
     <version>1.1.7.Final</version> 
    </dependency> 
    <dependency> 
     <groupId>org.jboss.arquillian.extension</groupId> 
     <artifactId>arquillian-persistence-dbunit</artifactId> 
     <version>1.0.0.Alpha7</version> 
    </dependency> 

(сообщение не является проблемой, но Eclipse, отказывается компилировать проект из-за него. Maven работает, хотя.)

Естественно, первым делом я пытался exclud е его от зависимостей Maven (wildfly-arquillian-container-managed где дерево зависимостей состояний зависимость происходит от):

<dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-arquillian-container-managed</artifactId> 
     <exclusions> 
      <exclusion> 
       <artifactId>jconsole</artifactId> 
       <groupId>sun.jdk</groupId> 
      </exclusion> 
     </exclusions> 
    </dependency> 

Там не было никаких изменений. Я попытался запустить Eclipse с -vm C:\Program Files\Java\jdk1.8.0_60\bin. И попытался отредактировать JDK в «Предпочтениях -> Установленные JRE», чтобы содержать JAR в каталоге инструментов. Но ничего не работает.

Что я могу сделать?

+0

Я думаю, что вы ошибаетесь. Нет версии '8.2.0.Final'' arquillian-junit-container' или 'arquillian-persistence-dbunit'. –

+0

@ JamesR.Perkins Да, вы правы, я скопировал неправильную версию из родительского _pom.xml_. –

+0

На эту же проблему можно ответить: [Ошибка пути сборки с зависимостями Maven (jconsole-jdk.jar)] (http://stackoverflow.com/questions/25362127/build-path-issue-with-maven-dependencies-jconsole -jdk-jar) – zsizsik

ответ

0

Возможно, это скорее обходное решение, чем правильное решение, так или иначе я решил эту проблему, удалив профиль «activebydefault» в pom. Таким образом, Eclipse не будет жаловаться на «Missing artifact sun.jdk: jconsole: jar: jdk», но тест JUnit не будет запускаться в Eclipse - поскольку я использую тестирование только из теста maven, а не для Eclipse, встроенного в JUnit , просто нужно указать, с каким идентификатором профиля вы хотите работать.

1

Я провел большую часть дня, борясь с этой проблемой. Простое решение - вручную установить отсутствующую банку из вашего jdk с помощью maven, например:

c: \ workspace \ prism> mvn install: install-file -Dfile = C: \ java \ jdk \ lib \ jconsole.jar -DgroupId = sun.jdk -DartifactId = jconsole -Dversion = 1.8 -Dpackaging = war.

Кто знает, почему затмение не может это сделать ...

7

Я кладу зависимости, как это и она отлично работает:

<dependency> 
     <groupId>org.jboss.arquillian.junit</groupId> 
     <artifactId>arquillian-junit-container</artifactId> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-arquillian-container-embedded</artifactId> 
     <version>8.1.0.CR1</version> 
     <scope>test</scope> 
    </dependency> 
    <dependency> 
     <groupId>org.slf4j</groupId> 
     <artifactId>slf4j-simple</artifactId> 
     <version>1.7.15</version> 
     <scope>test</scope> 
    </dependency> 
    <!-- Arquillian --> 

    <dependency> 
     <groupId>org.wildfly</groupId> 
     <artifactId>wildfly-embedded</artifactId> 
     <version>8.1.0.CR1</version> 
     <exclusions> 
      <exclusion> 
       <groupId>sun.jdk</groupId> 
       <artifactId>jconsole</artifactId> 
      </exclusion> 
     </exclusions> 
     <scope>test</scope> 
    </dependency> 

Смотрите, что исключение тег в «wildfly-вложенной» зависимость ...

Не забудьте указать команду «mvn install» и нажать правую кнопку в проекте и «Maven Update», если она не работает, попробуйте удалить папку «~/.m2/repository» и загрузить все зависимостей снова.

+0

это работает для меня спасибо @Mateus Pegoraro – ffSouza

3

Alastair, thx для решения проблемы. Причина кроется в pom переходной зависимости org.wildfly: wildfly-cli (8.2.0.Final). Там вы можете найти следующую декларацию зависимостей:

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

На самом деле, баночка находится в $ {java.home} /lib/jconsole.jar. Всего в двух точках от счастья :-)

P.S .: Версия также недостаточна. Итак, я удалил эту версию из своего локального репозитория maven.

1

Я столкнулся с этим во время работы на компьютере с Windows. Сам проект отлично работал на моей машине Ubuntu. Однако сбор проекта не удался именно с этим сообщением, вызванным переходной зависимостью org.wildfly:wildfly-ejb.

Отсутствует артефакт sun.jdk: JConsole: баночка: JDK

Я не чувствовал конфигурацию проекта необходимо изменить, как это должно просто работать нормально во всех средах и, таким образом, окружающую среду Windows, должно быть, было неправильно. Моя первая мысль заключалась в том, что сам Eclipse каким-то образом использует JRE вместо JDK.

Так что я проверил java -version в CMD и, как представляется, указывают на JRE установлен где-то в /Program Files папке в то время как я всегда вручную устанавливать JDKs в /Java папке. Затем я проверил переменную среды %PATH% в настройках Windows. Он, как представляется, включает /ProgramData/Oracle/Java/javapath. Эта папка содержала несколько символических ссылок на JRE в папке /Program Files. Это было фактически использовано для запуска Eclipse и выполнения всех его задач. Когда я его удалил (уже был JDK/bin ниже в настройке %PATH%) и перезапустил Eclipse и повторно выполнил сборку Maven, ошибка исчезла.

Изменения в конфигурации pom.xml или Eclipse не требуются. Просто следите за тем, что Windows все устанавливает и обновляет для вас в фоновом режиме и проверяет ваш %PATH%, если в нем все еще есть JDK.

+0

У меня такая же проблема с компиляцией WildFly внутри Eclipse. –

2

Причина в том, что jconsole.jar является частью jdk, поэтому он не распространяется как обычный пакет maven.

Как правило, проект pom.xml s вставляет этот jconsole.jar в виде системного пакета, то есть он даже не пытается загрузить их с центрального репозитория maven. Хотя это можно было бы распространять и на этом пути.

Простейшим решением проблемы является использование jdk, который содержит это jconsole.jar.

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

Или вы также можете изменить pom.xml или установить пакет вручную в локальное репозиторий maven, как утверждают другие ответы.

Смежные вопросы