2015-10-20 28 views
7

Dodając Arquillian do Maven zbudować otrzymuję powyższy wyjątek w Eclipse:Missing artefakt "sun.jdk: JConsole: słoik: jdk"

Missing artefakt sun.jdk: JConsole: jar: 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> 

(komunikat nie jest problemem, ale Eclipse odmawia skompilować projekt z tego powodu. Maven działa, choć.)

Oczywiście pierwszą rzeczą jaką zrobiłem było próbując exclud e go z zależnościami Maven (wildfly-arquillian-container-managed gdzie stany drzewa zależności zależność pochodzi z):

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

Nie było żadnych zmian. Próbowałem uruchomić Eclipse z -vm C:\Program Files\Java\jdk1.8.0_60\bin. Próbowałem edytować JDK w "Preferencjach -> Zainstalowanych JRE", aby zawrzeć JAR w katalogu narzędzi. Ale nic nie działa.

Co mogę zrobić?

+0

Myślę, że wersja jest błędna. Nie ma '8.2.0.Final' wersji' arquillian-junit-container' lub 'arquillian-persistence-dbunit'. –

+0

@ JamesR.Perkins Yep, masz rację, skopiowałem niewłaściwą wersję z _pom.xml_ rodzica. –

+0

Ten sam problem został rozwiązany tutaj: [Zadanie ścieżki kompilacji z zależnościami Mavena (jconsole-jdk.jar)] (http://stackoverflow.com/questions/25362127/build-path-issue-with-maven-consencies-jconsole -jdk-jar) – zsizsik

Odpowiedz

0

Być może jest to bardziej rozwiązanie niż odpowiednie rozwiązanie, w każdym razie rozwiązałem ten problem, usuwając profil "activebydefault" w pom. W ten sposób Eclipse nie będzie narzekał na "Brakujący artefakt sun.jdk: jconsole: jar: jdk", ale test JUnit nie będzie działał w środowisku Eclipse - ponieważ używam tylko testów z testu maven, a nie programu JUnit wbudowanego w Eclipse , wystarczy określić, który identyfikator profilu ma zostać uruchomiony.

1

Spędziłem najlepszą część dnia walcząc z tym problemem. Prostym rozwiązaniem jest ręczne zainstalowanie brakującego słoja z pliku jdk przy użyciu maven, coś w stylu:

c: \ workspace \ prism> instalacja mvn: install-file -Dfile = C: \ java \ jdk \ lib \ jconsole.jar -DgroupId = sun.jdk -DartifactId = jconsole -Direct = 1.8 -Dopakowanie = wojna.

Kto wie dlaczego zaćmienie nie może tego zrobić ...

7

Położyłam zależności jak to i to działa dobrze:

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

Zobacz, że znacznik wykluczenie jest w „JBoss Application Server Embedded” uzależnienia ...

Nie zapomnij komendy "mvn install" i kliknij prawy przycisk przy projekcie i "Aktualizacja Maven", jeśli to nie działa, spróbuj usunąć folder "~/.m2/repository" i pobierz wszystkie zależności ponownie.

+0

to działa dla mnie dzięki @Mateus Pegoraro – ffSouza

3

Alastair, thx za rozwiązanie problemu. Przyczyna leży w pom przejściowej zależności org.wildfly: wildfly-cli (8.2.0.Final). Można tam znaleźć następujące oświadczenie Zależność:

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

Faktycznie, słoik znajduje się w $ {java.home} /lib/jconsole.jar. Zaledwie dwie kropki od szczęścia :-)

P.S .: Wersja jest również niewystarczająca. Usunąłem tę wersję z mojego lokalnego repozytorium maven.

1

Zmierzyłem się z tym podczas pracy na komputerze z systemem Windows. Sam projekt działał doskonale w mojej maszynie Ubuntu. Jednak kompilacja projektu nie powiodła się dokładnie z tą wiadomością, wywołaną przejściową zależnością.

Brakujące artefakt sun.jdk: JConsole: słoik: jdk

nie czułem konfiguracji projektu potrzebne do być zmieniane jak to ma po prostu działać poprawnie we wszystkich środowiskach, a tym samym środowisku Windows sam musiał się mylić. Moją pierwszą myślą było, że sam Eclipse w jakiś sposób używa JRE zamiast JDK.

Więc sprawdziłem java -version w CMD i wydaje się wskazywać na JRE zainstalowanym gdzieś w /Program Files folderu podczas Zawsze byłem ręcznego instalowania JDK w /Java folderu. Następnie sprawdziłem zmienną środowiskową %PATH% w ustawieniach systemu Windows. Wygląda na to, że zawiera /ProgramData/Oracle/Java/javapath. Folder ten zawierał kilka dowiązań symbolicznych do folderu JRE w folderze /Program Files. Zostało to faktycznie użyte do uruchomienia Eclipse i uruchomienia wszystkich jego zadań. Kiedy go usunąłem (było już JDK/bin w ustawieniu %PATH%) i ponownie uruchomiłem Eclipse i ponownie wykonałem kompilację Mavena, błąd zniknął.

Brak zmian w konfiguracji pom.xml lub Eclipse. Po prostu obserwuj, co system Windows instaluje i aktualizuje dla Ciebie w tle, i sprawdź, czy nie ma JDK w górnej części.

+0

Mam ten sam problem ze skompilowaniem WildFly w Eclipse. –

2

Przyczyną problemu jest to, że jconsole.jar jest częścią pakietu jdk, dlatego nie jest dystrybuowany jako zwykły pakiet maven.

Zwykle, projekt pom.xml s wstawia ten jconsole.jar jako pakiet systemowy, tj. Nie próbuje nawet pobierać ich z repozytorium centralnego maven. Chociaż możliwe byłoby rozpowszechnianie go również w ten sposób.

Najprostszym rozwiązaniem problemu jest użycie jdk, który zawiera ten jconsole.jar.

Alternatywnie możesz pobrać ten słoik z dowolnego miejsca, tylko musisz go ustawić w ścieżce kompilacji.

Można również zmodyfikować plik pom.xml lub ręcznie zainstalować pakiet w lokalnym repozytorium maven, jak podają inne odpowiedzi.