Fehlendes Artefakt com.sun: tools: jar

88

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_HOMEUmgebungsvariablen, 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>
kühne Erfindungen
quelle
Erhalten Sie den gleichen Fehler beim Ausführen von maven über die Befehlszeile?
Raghuram
Ich habe die Datei pom.xml hinzugefügt. Ich entschuldige mich dafür, dass ich nicht weiß, wie ich mit Maven über die Befehlszeile etwas anfangen soll.
kühne Erfindungen
POM ist kaputt. Fehlende obligatorische Tags wie Gruppen-ID, Artefakt-ID, Version ... Das übergeordnete POM ist auch eine Modulversion, die in Maven Central nicht vorhanden ist.
Mark O'Connor
Hast du es irgendwie behoben? Nichts davon scheint für mich zu funktionieren (Windows7-64 Bit - JDK1.6)
Ovidiu Latcu
Könnten Sie eine Antwort akzeptieren, die für Sie funktioniert hat, da dies ein häufiges Problem ist?
Roy Truelove

Antworten:

54

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:

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

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.jarrichtige 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 EnvironmentSchlüssel anstelle des HKLM\Software\JavaSoft\Java Development KitSchlüssels gesucht .

Kanmuri
quelle
10
Dies funktionierte für uns in Windows 7. Wir mussten die Verknüpfung ändern, um das Argument -vm "..." hinzuzufügen, anstatt eclipse.ini zu verwenden. Außerdem mussten wir unser Maven-Projekt erneut in den Arbeitsbereich importieren, bevor der Fehler behoben werden konnte.
Kit Menke
2
Gleiches hier - keine Würfel mit .ini, aber das -vm-Argument in der cmdline hat funktioniert.
Roy Truelove
1
Ich habe die Antwort bearbeitet, um zu erklären, wie eclipse.init geändert wird. Quelle: wiki.eclipse.org/Eclipse.ini#-vm_value:_Windows_Example
OGrandeDiEnne
1
Gleiches hier - das Hinzufügen von -vm zur Verknüpfung hat bei mir funktioniert. Ich muss mein Projekt nicht erneut importieren, es hat gereicht, um es zu projizieren / maven / zu aktualisieren.
Łukasz Dumiszewski
1
Damit es funktioniert, musste ich auch javaw.exediesen Pfad ergänzen (also vollständig :) -vm "T:\Program Files\Java\jdk1.8.0_66\bin\javaw.exe";
Jacob van Lingen
27

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:

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

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

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

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:

 <exclusions>
            <exclusion>
                <artifactId>tools</artifactId>
                <groupId>com.sun</groupId>
            </exclusion>
        </exclusions>
Cristian Colorado
quelle
3
Tipp: Verwenden Sie 'mvn dependency: tree', um herauszufinden, wo Sie Ihren Ausschluss einfügen können.
Lars
Das Hinzufügen des Ausschluss-Tags pom.xmlfunktioniert bei mir nicht.
user3437460
25

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.jarin das hinzuzufügen pom.xml. Wie so:

 <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>Stellen Sie sicher, dass Sie die Datei an der Stelle ändern , an der sich Ihre tools.jar-Datei befindet.

Denny
quelle
42
Ich empfehle dringend, dies nicht zu tun - es löst das Problem, ist aber nicht für andere Entwickler oder zum Erstellen von Umgebungen portierbar. Sehen Sie die anderen Antworten, sie scheinen den Trick zu tun
Roy Truelove
Vielleicht ist es besser, den systemPath in <systemPath> $ {java.home} /lib/plugin.jar </ systemPath> zu ändern
Guilherme Santos
Bei stackoverflow.com/questions/3080437/… wird dies auf tragbare Weise durchgeführt.
Vorburger
Ich ändere meine pom.xml wie folgt (erzwinge eine neuere Version von java-md-doclet). Der Fehler verschwindet: <dependencyManagement> <dependencies> <dependency> <groupId> com.github.iotaledger </ groupId> <artifactId> java- md-doclet </ifactId> <version> 2.1.3 </ version> </ dependency> </ dependencies> </ dependencyManagement>
Samir 007
19

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:

Eclipse-Ansicht

Der Schuldige für mich war also:

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

Durch Hinzufügen eines Ausschlusses wurde Folgendes behoben:

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

Der Ausschluss scheint keine Nachteile zu haben.

eis
quelle
1
Arbeitete für mich, Problem entstand ein Upgrade einer Java 6 Codebasis auf Java 8
Jasonoriordan
Ich habe das Spotbugs-Maven-Plugin als meinen Schuldigen identifiziert, danke!
timbru31
8

Das gleiche gilt für mich und Windows 7. Am Ende habe ich zwei Zeilen hinzugefügt zu eclipse.ini:

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

Ich habe versucht, %JAVA_HOME%dort zu verwenden, aber es hat nicht funktioniert.

Jakub Adamek
quelle
2
Hinweis für die Zukunft: Dies muss vor der -vmargsZeile stehen, da alles, was vergangen ist, als VM-Startargumente interpretiert wird. Also: kurz davor!
Eis
Diese Lösung -vmvor dem -vmargsist der Schlüssel!. Danke dir!
Taber
6

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

Sealsix
quelle
5

Überprüfen Sie die JDK-Version auf Ihrem Computer und in pom.xmlbeiden sollte sie identisch sein

<dependency>
    <groupId>sun.jdk</groupId>
    <artifactId>tools</artifactId>
    <version>1.8</version>
    <scope>system</scope>
    <systemPath>C:\Program Files\Java\jdk1.8.0_192\lib\tools.jar</systemPath>
</dependency>
Arunkumar Sambu
quelle
3

Nachdem ich eine Weile gekämpft hatte, konnte ich endlich damit arbeiten eclipse.inianstatt 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:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
bedingen
quelle
3

Wenn dieses Problem weiterhin auftritt, liegt dies möglicherweise an einem JDK mit einer Version von mindestens 11.

Das tools.jarArchiv 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 der com.sun:toolsBibliothek basieren.

Olivier
quelle
2

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

<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>
user1140969
quelle
1

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

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

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!

 <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>
Vladiat0r
quelle
1

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

    <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> 
Divyang Patel
quelle
1

Endete mit eclipse.ini fix:

openFile
-vm (Your Java Home JDK here)

Beispielsweise, -vm C:\Java\JDK\1.6 .

Musste auch JRE in JDK ändern:

Gehen Sie in der Eclipse-IDE zu:

  1. Fenster -> Einstellungen -> Installierte JREs
  2. Klicken Sie auf Hinzufügen (um eine neue JRE zu finden).
  3. Wählen Sie Standard-JVM -> Weiter
  4. Klicken Sie auf Verzeichnis, um die JRE-Startseite zu suchen, JDK_INSTALL_LOCATION einzugeben und fertig zu stellen.
  5. Gehen Sie zu den Eigenschaften Ihres Java-Projekts -> Java-Erstellungspfad -> Bibliotheken -> wählen Sie JRE -> Bearbeiten -> wählen Sie Arbeitsbereich-Standard-JRE -> Fertig stellen
  6. Führen Sie eine vollständige Bereinigung des Arbeitsbereichs mit project -> clean durch.
Ahaaman
quelle
Alle unsere Windows-Instanzen von Eclipse IDE haben dieses Problem. Alle Ubuntu-basierten Eclipse-IDEs sind für uns nicht betroffen. Daher haben wir diese Methode für Windows-Instanzen verwendet und sie behebt unsere Probleme. Stellen Sie sicher, dass Sie danach einen Zeilenumbruch hinzufügen -vm, den Java SDK-Pfad in die Nect-Zeile einfügen und alle neu hinzugefügten -vmFlags vor dem --vmargsin der eclipse.iniDatei platzieren.
tom_mai78101
1

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.

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

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.

Rick Velilla II
quelle
0

Ich hatte das gleiche Problem unter Windows 7 und Eclipse 3.7. Ich konnte es durch Starten beheben

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

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.

Hampelmann
quelle
0

Nachdem ich all das ausprobiert hatte, hatte ich immer noch das gleiche Problem.

  • Die Umgebungsvariable PATH zeigt auf JDK 1.7 \ bin
  • Meine Umgebungsvariable JAVA_HOME wurde auf das JDK 1.7 verwiesen
  • Meine eclipse.ini hatte den Eintrag javaw -vm, der auf JDK 1.7 zeigte
  • Meine Eclipse-Präferenz hatte JDK 1.7 als installierte JRE.
  • Mein Projekterstellungspfad verwendete JDK 1.7.

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

HKLM \ Software \ Javasoft \ Version

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.

Ash R.
quelle
0

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.

Samuel Åslund
quelle
0

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

michaldo
quelle
0

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

user8058203
quelle
0

Lassen Sie uns verstehen, warum dieses Problem aufgetreten ist:

$ mvn -Version

Apache Maven 3.6.1 (d66c9c0b3152b2e69ee9bac180bb8fcc8e6af555; 2019-04-04T20: 00: 29 + 01: 00) Maven-Startseite: C: \ Programme \ Apache \ maven-3.6.1 Java-Version: 1.8.0_221, Hersteller: Oracle Corporation, Laufzeit: C: \ Programme \ Java \ jre1.8.0_221 Standardgebietsschema: en_GB, Plattformcodierung: Cp1252 Betriebssystemname: "Windows 10", Version: "10.0", Bogen: "amd64", Familie: "Windows"

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.

Sambit Swain
quelle
0

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.

Geben Sie hier die Bildbeschreibung ein

Nehmen Sie den folgenden Eintrag in POM.xml vor, wie von anderen richtig angegeben

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

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.

Geben Sie hier die Bildbeschreibung ein

Gaurav Khurana
quelle
0

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.

Larsen
quelle
-1

Wenn Sie openjdk verwenden, müssen Sie das openjdk-6-sdk-Paket installieren.

Zwiebeljake
quelle
-1

Ändern der relativen Position von ${java.home}/../lib/tools.jarauf den absoluten Pfad der C:\Program Files\Java\jdk1.6.0_29\lib\tools.jarArbeiten 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.

JDBertron
quelle