2015-10-20 15 views
7

Beim Hinzufügen Arquillian zu einem Maven bauen ich die oben genannte Ausnahme in Eclipse:Fehlende Artefakt "sun.jdk: jconsole: jar: jdk"

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

(die Meldung ist nicht das Problem, aber das Eclipse-Projekt zu kompilieren, weil es sich weigert. Maven arbeitet, though.)

Natürlich ist das erste, was ich tat, versuchte zu exclud e aus den Abhängigkeiten Maven (wildfly-arquillian-container-managed ist, wo aus dem Abhängigkeitsbaum stellt die Abhängigkeit kommt):

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

Es gab keine Veränderung. Ich habe versucht, Eclipse mit -vm C:\Program Files\Java\jdk1.8.0_60\bin zu starten. Und versucht, das JDK in "Einstellungen -> Installierte JREs" zu bearbeiten, um die JAR im Tools-Verzeichnis zu enthalten. Aber nichts funktioniert.

Was kann ich tun?

+0

Ich denke, du bist Version ist falsch. Es gibt keine "8.2.0.Final" -Version von "arquillian-junit-container" oder "arquillian-persistence-dbunit". –

+0

@ JamesR.Perkins Ja, du hast Recht, ich habe die falsche Version aus der _pom.xml_ des Elternteils kopiert. –

+0

Das gleiche Problem wird hier beantwortet: [Build Path Problem mit Maven Abhängigkeiten (jconsole-jdk.jar)] (http://stackoverflow.com/questions/25362127/build-path-issue-with-maven-dependencies-jconsole -jdk-jar) – zsizsik

Antwort

0

Vielleicht eher eine Abhilfe ist, als eine richtige Lösung, jedenfalls löste ich dieses Problem, indem Sie das Profil „activebydefault“ in der pom zu entfernen. Auf diese Weise wird sich Eclipse nicht über das "Missing artefact sun.jdk: jconsole: jar: jdk" beschweren, aber der JUnit-Test wird nicht in Eclipse ausgeführt, da ich nur den maven-Test verwende und nicht den Eclipse-eingebetteten JUnit-Runner Es muss nur angegeben werden, für welche Profil-ID es gilt.

1

Ich verbrachte den größten Teil eines Tages damit, dieses Problem zu bekämpfen. Einfache Lösung ist, das fehlende Glas von Ihrem jdk mit Maven manuell zu installieren, etwas wie:

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

Wer weiß, warum Eclipse kann das nicht tun ...

7

habe ich meine Abhängigkeiten wie diese und es funktioniert gut:

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

Sehen Sie, dass der Ausschluss-Tag in der ist „Wildfly-embedded“ Abhängigkeit ...

vergessen sie nicht „mvn installieren“ und klicken sie die rechte Maustaste auf Projekt und „Maven Update“ zu befehlen, wenn es nicht versuchen, funktioniert Ordner löschen „~/.m2/Repository“ und laden sie alle Abhängigkeiten wieder.

+0

es funktioniert für mich dank @Mateus Pegoraro – ffSouza

3

Alastair, thx für die Lösung des Problems. Die Ursache liegt im Pom der transienten Abhängigkeit org.wildfly: wildfly-cli (8.2.0.Final). Dort können Sie die folgende Abhängigkeit Erklärung finden:

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

Eigentlich ist das Glas in $ {} java.home /lib/jconsole.jar befindet. Nur zwei Punkte weg von Glück zu haben :-)

P. S .: Die Version ist ebenfalls unzureichend. Also habe ich diese Version aus meinem lokalen maven-Repository gelöscht.

1

Ich konfrontiert dies während der Arbeit in einer Windows-Maschine. Das Projekt selbst funktionierte in meiner Ubuntu-Maschine einwandfrei. Der Build des Projekts scheiterte jedoch genau an dieser Nachricht, ausgelöst durch eine vorübergehende org.wildfly:wildfly-ejb Abhängigkeit.

Fehlende Artefakt sun.jdk: jconsole: jar: jdk

ich nicht die Projektkonfiguration fühlte Bedarf geändert werden, wie es angenommen hat, nur gut funktionieren in allen Umgebungen und damit der Windows-Umgebung selbst muss falsch gewesen sein. Mein erster Gedanke war, dass Eclipse selbst JRE anstelle von JDK verwendet.

So überprüfte ich java -version in CMD und es scheint zu einem JRE-zu-Punkt irgendwo in /Program Files Ordner installiert, während ich habe immer manuell worden JDKs in /Java Ordner installieren. Dann habe ich die Umgebungsvariable %PATH% in Windows-Einstellungen untersucht. Es scheint eine /ProgramData/Oracle/Java/javapath zu enthalten. Dieser Ordner enthielt einige symbolische Links zum JRE in /Program Files Ordner. Damit wurde Eclipse gestartet und alle Aufgaben erledigt. Als ich es entfernte (es gab bereits eine JDK/bin weiter unten in %PATH% Einstellung) und Eclipse neu gestartet und Maven Build erneut ausgeführt, ging der Fehler weg.

Keine Änderungen an pom.xml oder Eclipse-Konfiguration erforderlich. Passen Sie einfach auf, was Windows alles für Sie im Hintergrund installiert und aktualisiert und überprüfen Sie Ihre %PATH%, wenn es immer noch JDK oben hat.

+0

Ich habe das gleiche Problem beim Kompilieren von WildFly in Eclipse. –

2

Der Grund des Problems ist, dass der jconsole.jar Teil des jdk ist, daher wird es nicht als gewöhnliches Maven-Paket verteilt.

In der Regel Projekt pom.xml s diese jconsole.jar als Systempaket, d. H. Es wird nicht einmal versucht, sie aus dem zentralen Maven Repo herunterladen. Obwohl es möglich wäre, es auch auf diesem Weg zu verteilen.

Die einfachste Lösung des Problems ist die Verwendung eines jdk, das diese jconsole.jar enthält.

Alternativ können Sie dieses Jar von überall herunterladen, nur müssen Sie es im Kompilierungsklassenpfad erreichbar machen.

Oder Sie können auch die pom.xml ändern oder das Paket manuell in Ihrem lokalen maven Repo installieren, wie die anderen Antworten angeben.

Verwandte Themen