Ich habe das Tutorial "Erste Schritte" befolgt, stecke aber fest, nachdem ich das Playn-Projekt mit Maven importiert habe. Ich verwende Eclipse Indigo unter 64-Bit-Windows 7.
Alle importierten Projekte haben den gleichen Fehler:
Missing Artifact com.sun:tools:jar in all the pom.xml files.
Nach ein paar Stunden Forensuche habe ich versucht:
Installieren des neuesten Java 1.6.029 Ändern meiner JAVA_HOME
Umgebungsvariablen, um auf \program files\Java\jdk1.6_029
Ändern meiner Eclipse Java-Einstellungen zur Verwendung der JRE zu verweisen jdk1.6_029
.
Ich würde wirklich gerne mit playn experimentieren, aber warum es ein paar Beiträge gibt, kann ich anscheinend keine Antwort auf die Lösung finden. Einige Leute sagen, Sun habe etwas aus dem 64-Bit-JDK entfernt, andere sagen, Sie müssten Ihre XML-Dateien bearbeiten, viele Leute sagten, Sie hätten Ihre geändert JAVA_HOME
, und andere sagten , Sie müssten Ihre VM-Optionen für Eclipse ändern.
Jede Hilfe bei der Aufklärung wäre dankbar und möglicherweise für viele nützlich, da ich hier kein besonders merkwürdiges Setup habe.
(bearbeiten) Hier ist die pom.xml im ersten Projekt. Eclipse kennzeichnet Fehler in der Zeile, die sagt:
<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>
Antworten:
Ich habe gerade über diese Frage zu demselben Problem und wie ich es gelöst habe, geschrieben, aber ich werde es auch hier einfügen (und erweitern), da es relevanter erscheint.
Ich hatte das gleiche Problem bei der Verwendung von Eclipse in Windows 7, auch wenn ich die JRE aus der Liste der JREs in den Eclipse-Einstellungen entfernt und nur das JDK dort hatte.
Am Ende musste ich (wie Sie in Ihrer Frage erwähnt haben) die Befehlszeile für die Verknüpfung ändern, die ich zum Starten von Eclipse verwende, um das Argument -vm wie folgt hinzuzufügen:
Natürlich würden Sie dies so anpassen, dass es auf das bin-Verzeichnis Ihrer JDK-Installation verweist. Dies führt dazu, dass Eclipse selbst mit dem JDK anstelle von JRE ausgeführt wird und dann das
tools.jar
richtige finden kann.Ich glaube, das hat damit zu tun, wie Eclipse seine Standard-JRE findet, wenn keine angegeben ist. Ich vermute, es zieht JRE JDK vor (warum, ich weiß nicht) und entscheidet sich für die erste kompatible JRE, die es findet. Und wenn Windows-Registrierungsschlüssel nicht mehr angezeigt werden, wie in der Antwort von Vladiat0r vorgeschlagen, wird zuerst nach dem
HKLM\Software\JavaSoft\Java Runtime Environment
Schlüssel anstelle desHKLM\Software\JavaSoft\Java Development Kit
Schlüssels gesucht .quelle
javaw.exe
diesen Pfad ergänzen (also vollständig :)-vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe"
;Ich hatte die gleichen Probleme bei der Entwicklung einer einfachen Webdienstanwendung. In meinem Fall musste ich ein Codehous-Plug-In hinzufügen, um Jaxws-Bibliotheken zu erhalten. Maven Pom fragte jedoch immer wieder nach der Tools-JAR-Datei.
Ich muss sagen, dass die obigen Kommentare korrekt sind. Sie können den folgenden Eintrag in die POM-Datei aufnehmen:
Was passiert jedoch, wenn Sie auf einer Produktionsinstanz bereitstellen müssen? Sie könnten den Pfad durch einen Verweis auf eine Systemumgebungsvariable ersetzen, aber das sieht zumindest für mich immer noch nicht gut aus.
Ich habe in einem StackOverflow-Kommentar eine andere Lösung gefunden:
Maven 3 Artefaktproblem
Sie schlagen vor, eine Ausschlusserklärung für das Tool-Jar aufzunehmen, und es funktioniert. Zusammenfassend: Sie können eine Ausschlussregel in Ihre Abhängigkeit aufnehmen und das Problem tool.jar vermeiden:
quelle
pom.xml
funktioniert bei mir nicht.Ich bin auf das gleiche Problem gestoßen, und die Art und Weise, wie ich es lösen konnte, bestand darin, den Abhängigkeitsspeicherort von
tools.jar
in das hinzuzufügenpom.xml
. Wie so:<systemPath>
Stellen Sie sicher, dass Sie die Datei an der Stelle ändern , an der sich Ihre tools.jar-Datei befindet.quelle
Keine der anderen Antworten hat es für mich getan. Was war es, nach der "Abhängigkeitshierarchie" der pom.xml in Eclipse zu suchen, wobei die Angabe eines Filters "tools" ergab, dass ich eine echte Abhängigkeit von tools.jar hatte:
Der Schuldige für mich war also:
Durch Hinzufügen eines Ausschlusses wurde Folgendes behoben:
Der Ausschluss scheint keine Nachteile zu haben.
quelle
Das gleiche gilt für mich und Windows 7. Am Ende habe ich zwei Zeilen hinzugefügt zu
eclipse.ini
:Ich habe versucht,
%JAVA_HOME%
dort zu verwenden, aber es hat nicht funktioniert.quelle
-vmargs
Zeile stehen, da alles, was vergangen ist, als VM-Startargumente interpretiert wird. Also: kurz davor!-vm
vor dem-vmargs
ist der Schlüssel!. Danke dir!Ich habe dieses Problem in den Eclipse 4.3-Einstellungen gelöst - nur durch Hinzufügen von JDK-Bibliotheken zu den JRE-Bibliotheken.
Gehen Sie zu Windows -> Einstellungen -> Java -> installierte JREs -> wählen Sie JDK aus und klicken Sie auf Bearbeiten -> klicken Sie auf Externe JARs hinzufügen und fügen Sie tools.jar hinzu (in JDK / lib platziert).
quelle
Überprüfen Sie die JDK-Version auf Ihrem Computer und in
pom.xml
beiden sollte sie identisch seinquelle
Nachdem ich eine Weile gekämpft hatte, konnte ich endlich damit arbeiten
eclipse.ini
anstatt mit der Kommandozeile. Nachdem ich die Dokumentation endlich gelesen hatte , wurde mir klar, dass das Argument -vm in einer separaten Zeile stehen muss, ohne Anführungszeichen und vor allen -vmargs:quelle
Wenn dieses Problem weiterhin auftritt, liegt dies möglicherweise an einem JDK mit einer Version von mindestens 11.
Das
tools.jar
Archiv wurde aus dem lib-Ordner in diesen JDKs entfernt (siehe diese Antwort auf eine ähnliche Frage). Versuchen Sie in diesem Fall, andere Versionen der Bibliotheken zu verwenden, die nicht auf dercom.sun:tools
Bibliothek basieren.quelle
Ich habe einen ähnlichen Fehler erhalten. Dies liegt daran, dass JDK in Eclipse nicht richtig eingestellt ist. Gurke benötigt JDK zusammen mit JRE, also fügen Sie unten Abhängigkeit in Ihrer pom.xml hinzu
quelle
Auf der Registerkarte "POM" der POM-Dateien wird der folgende Ableitungspfad angezeigt:
C:\Program Files\Java\jre6/../lib/tools.jar
und ich denke, dass dies in Windows kein gültiger Pfad ist. Ich habe erfolglos versucht, die tools.jar in den Ordner jre6 / lib sowie in Java / lib zu kopieren.Der Wert "C: \ Programme \ Java \ jre6" stammt aus der Registrierung
Stellen Sie den JavaHome-Schlüssel auf den Ort ein, an dem Ihre JDK-JRE installiert ist. Dann gingen alle Compilerfehler weg.
Die Neuinstallation des JDK hat das Problem nicht behoben. Das Festlegen der Systemumgebungsvariablen JAVA_HOME oder java.home hat nicht geholfen.
Die andere Alternative, die ich gesehen habe, ist das Hinzufügen der Abhängigkeit mit dem richtigen Pfad in jeder POM-XML-Datei, aber die Playn-Samples enthalten viele Dateien, was lächerlich zu bearbeiten ist.
Dies sind die effektiven POM-Ergebnisse, die den FALSCHEN Pfad anzeigen!
quelle
Fügen Sie diese Abhängigkeit in die Datei pom.xml ein. Ich hoffe das hilft.
In
<systemPath>
Eigenschaft müssen Sie Ihren jdk lib Pfad schreiben ..quelle
Endete mit eclipse.ini fix:
Beispielsweise,
-vm C:\Java\JDK\1.6
.Musste auch JRE in JDK ändern:
Gehen Sie in der Eclipse-IDE zu:
quelle
-vm
, den Java SDK-Pfad in die Nect-Zeile einfügen und alle neu hinzugefügten-vm
Flags vor dem--vmargs
in dereclipse.ini
Datei platzieren.Wie andere Poster angegeben haben, hat das Problem hier mit der JRE zu tun, die Eclipse verwendet, um das Werkzeugglas nicht finden zu können. Ich habe das Problem gelöst, indem ich in eine andere Richtung gegangen bin als oben angegeben, und das lag an der Art und Weise, wie meine Projekte und meine Umgebung.
Eclipse 4.5 benötigt mindestens Java 7 zur Laufzeit, daher habe ich mein System so eingerichtet, dass es eine Java 8-JRE unter C: \ java \ jre1.8.0_45 verwendet.
Als Nächstes verwende ich eine POM-Datei, die davon ausgeht, dass ich mit einem Java 6 JDK ausgeführt werde.
Ich darf die POM-Datei nicht ändern, also musste ich ein bisschen jiggery pokery machen. Ich habe die tools.jar von meinem Java 6 JDK kopiert, das Verzeichnis C: \ java \ lib erstellt und dort eingefügt. Ich habe dann Eclipse neu gestartet und mein Projekt bereinigt. Und VOILA-Fehler sind weg.
Es ist keine elegante Lösung, und ich würde denken, dass die richtige Lösung darin besteht, die Art und Weise zu ändern, in der das POM eingerichtet ist, aber da ich dies nicht konnte, funktioniert dies.
quelle
Ich hatte das gleiche Problem unter Windows 7 und Eclipse 3.7. Ich konnte es durch Starten beheben
Sie können ein cmd starten und Eclipse so starten, oder Sie können Ihre Verknüpfung bearbeiten und -vm "D: \ JDK6 \ bin" als Argument im "Zielabschnitt" hinzufügen.
Als Nebenbemerkung habe ich auch versucht, -vm "D: \ JDK6 \ bin" zu eclipse.ini hinzuzufügen, aber es hat nicht funktioniert. Das Hinzufügen von JRE6 funktioniert nicht, da es NICHT tools.jar im Verzeichnis "lib" enthält. Nur JDK.
quelle
Nachdem ich all das ausprobiert hatte, hatte ich immer noch das gleiche Problem.
Dann habe ich folgendes versucht:
Öffnen Sie eine Eingabeaufforderung und geben Sie java -version ein. Es zeigte mir eine JRE-Version 1.8.
Öffnen Sie eine Eingabeaufforderung, gehen Sie zum Speicherort des bin-Verzeichnisses von JDK 1.7 und geben Sie java -version ein. Diesmal zeigte es richtig 1.7.
Nachdem ich an einigen Stellen gegraben hatte, stellte ich fest, dass es neben den oben genannten Stellen zusätzliche Stellen für die Java-Laufzeit gibt.
Registrierung
Es gibt auch einen Registrierungsschlüssel, unter dem der JRE-Speicherort angegeben ist
Ich habe die Einträge hier geändert, um auf das JDK 1.7 zu verweisen
Programmdaten
Das Verzeichnis "C: \ ProgramData \ Oracle \ Java \ javapath" ist in der Umgebungsvariablen PATH vorhanden und enthält Verknüpfungen zu Java, Javaw usw. Das Ziel für diese Verknüpfungen war alle JRE 1.8. ( Dies war meiner Meinung nach das Hauptproblem. ) Ich habe die Verknüpfungen geändert, um auf die richtigen JDK-Exe zu verweisen.
Sobald dies alles erledigt war. Ich habe Eclipse geöffnet. Alle Fehler in jdk.tools pom.xml sind verschwunden.
quelle
Ich habe dieses Problem und es stellt sich heraus, dass JBossDevStudio 9.1 unter Windows ein 32-Bit-Programm ist. Eclipse und damit das JBossDevStudio funktionieren nicht mit dem falschen JVM-Typ. 64-Bit-Eclipse benötigt eine 64-Bit-JVM, 32-Bit-Eclipse benötigt eine 32-Bit-JVM. Daher funktionierte die Konfiguration von Eclipse für die Ausführung mit meinem installierten 64-Bit-JDK nicht.
Das Installieren eines 32-Bit-JDK und das Ausführen von Eclipse löste das Problem.
Zumindest für eines meiner Projekte ist ein anderes, bei dem ich versucht habe, ein Laufzeit-JDK in den Eclipse-Projekteigenschaften zu konfigurieren, immer noch fehlerhaft.
quelle
Ich habe das Problem gelöst, indem ich JRE von meinem System deinstalliert und nur JDK verlassen habe. Die Neuinstallation von JDK reicht nicht aus, da das Oracle JDK-Installationsprogramm sowohl JDK als auch JRE installiert
Übrigens scheint mir dieser Fehler für Probleme verantwortlich zu sein: java.home der Eclipse-JRE wird anstelle der Build-JRE verwendet
quelle
In meinem Fall habe ich Maven Build aus Eclipse Run-Konfigurationen ausgeführt. Selbst nachdem die Standard-JRE-Konfiguration so geändert wurde, dass sie auf den JDK-Installationsordner verweist, wurde das Problem für mich nicht behoben. Der Grund dafür ist, dass in der Maven Build - Run-Konfiguration eine JRE-Registerkarte vorhanden ist (siehe Abbildung unten). Und es zeigte immer noch auf meine JRE-Installation. Ich habe es geändert, um auf die JDK-Installation zu verweisen, und dann den Maven Build ausgeführt. Diesmal hat es funktioniert. Geben Sie hier die Bildbeschreibung ein
quelle
Lassen Sie uns verstehen, warum dieses Problem aufgetreten ist:
Der Maven-Befehl "mvn -version" gibt über der Ausgabe zurück.
Wir können sehen, dass maven den Java-Laufzeitpfad als "C: \ Programme \ Java \ jre1.8.0_221" erhält, wenn Sie keine Umgebungsvariable JAVA_HOME angeben. Und dann nimmt Maven an, dass dieser Pfad JAVA_HOME ist. Aus diesem Grund sucht maven beim Erstellen der Anwendung entweder über die Eingabeaufforderung oder eine IDE nach der Datei tools.jar im Pfad "% JAVA_HOME% .. \ lib \ tools.jar".
tools.jar ist im JDK-Pfad vorhanden, daher müssen wir dies gegenüber maven erwähnen, bevor wir es verwenden. Heute werden Maschinen mit bereits verfügbarem jre gebaut, aber jdk wird nur für die Entwicklung benötigt. Dies könnte der Grund sein, warum Maven automatisch einen Pfad auswählt.
Weitere Hilfe finden Sie im Code mvn.cmd im Installationspfad von maven.
quelle
Das Problem ist, dass das System die Datei tools.jar nicht finden kann
Überprüfen Sie daher zunächst, ob sich die Datei in der JDK-Installation des Verzeichnisses befindet.
Nehmen Sie den folgenden Eintrag in POM.xml vor, wie von anderen richtig angegeben
Führen Sie dann die folgenden Schritte aus, um das Problem zu beheben
1) Klicken Sie mit der rechten Maustaste auf Ihr Projekt
2) Klicken Sie auf Pfad erstellen
Wählen Sie gemäß dem folgenden Bild die Standard-JRE für den Arbeitsbereich aus und klicken Sie auf Fertig stellen.
quelle
Das Ändern von 'Installierte JREs' unter 'Einstellungen -> Java -> Installierte JRE' in JDK Home hat für mich funktioniert.
Zu Ihrer Information - Ich verwende JDK 1.8.
quelle
Wenn Sie openjdk verwenden, müssen Sie das openjdk-6-sdk-Paket installieren.
quelle
Ändern der relativen Position von
${java.home}/../lib/tools.jar
auf den absoluten Pfad derC:\Program Files\Java\jdk1.6.0_29\lib\tools.jar
Arbeiten für mich.Sie sollten es nur in der ändern müssen
playn/pom.xml
.Für die Playn-Samples hat Vladiator recht, das sind zu viele POM-Dateien, um sie zu ändern.
quelle