Maven Der Javac-Compiler konnte nicht gefunden werden in:

76

Wenn ich versuche, eine Kriegsdatei zu generieren, zeigt es einige Fehler wie

[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar

Wenn ich es tue echo %path%, zeigt es

 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b
in;C:\Program Files\Notepad++\;%JDK_HOME%

Wenn ich es tue echo %JDK_HOME%

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin

Ich weiß nicht, warum sich maven auf jre bezieht, wenn meine Umgebungsvariable jdk ist. Ich ändere auch installierte JRE auf jdk1.6.

BKK
quelle
3
Das JDK_HOME sollte das Basisverzeichnis sein, dh ohne das \binund Sie sollten es %JDK_HOME%\binin Ihrem Pfad haben. Kannst du rennen D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin\java -version?
Peter Lawrey
3
Maven erwartet JAVA_HOME, dass es nicht auf Ihr JDK-Installationsverzeichnis eingestellt wird JDK_HOME. Siehe Maven-Installationsanweisungen .
Jesper

Antworten:

152

Es ist nur im Eclipse-Setup

Es hat 4 Schritte TODO.

Schritt 1: Klicken Sie mit der rechten Maustaste auf die Eigenschaften des Eclipse-Projekts

Schritt 2: Java Build Path -> Bibliotheken

Schritt 3: Wählen Sie JRE-Systembibliothek -> Klicken Sie auf die Schaltfläche Bearbeiten -> Klicken Sie auf die Schaltfläche Installierte JREs

Schritt 4: Bearbeiten Sie JRE als Set JRE Home = JAVA_HOME

ScreentShot:

Geben Sie hier die Bildbeschreibung ein

Parthasarathy B.
quelle
2
Ich habe das gleiche Problem und ich habe getan, wie Sie hier gezeigt haben ... und jetzt funktioniert es gut, aber ich frage mich, warum es bis jetzt ohne diese Änderung gut funktioniert hat (Java Home to Jre einrichten) .für mich Mein Projekt hat bis jetzt gut funktioniert, aber plötzlich bekam ich diesen Fehler, als ich mein Projekt in Eclipse erneut ausführte.
Preeth
@Preeth: Letztendlich könnte Ihre Sonnenfinsternis JDK zugeordnet haben. Wenn Sie JDK entfernt oder aktualisiert haben, haben Sie dieses Problem
Parthasarathy B
1
Eclipse verweist häufig auf JRE außerhalb des JDK. Sie sollten den Pfad zu JDK / jre ändern. Für mich geht das.
Smaragdhieu
35

Gehen Sie zu Fenster -> Einstellungen ... -> Java -> Installierte JREs

Bearbeiten Sie JRE Home = JAVA_HOME oder JAVA_HOME \ jre

Wenn Sie beispielsweise jdk1.6.0_04 verwenden, das in C: \ Programme installiert ist, nehmen Sie die folgenden Änderungen vor:

C: \ Programme \ Java \ jdk1.6.0_04 \ jre oder C: \ Programme \ Java \ jdk1.6.0_04 anstelle der Standarddatei unter C: \ Programme \ Java \ jre7

Pradeep Vairamani
quelle
1
Es funktioniert, wenn Sie Eclipse verwenden (als Maven-Build ausführen). Dieser Fehler wurde jedoch durch Festlegen der Umgebungsvariablen java_home behoben. Wie auch immer, danke für Ihre Antwort, Sir, es hat bei Eclipse für mich funktioniert.
Porfiriopartida
Das hat bei mir funktioniert, aber wow - SO ärgerlich, nachdem ich jedes einzelne mögliche JAVA_HOME, JDK_HOME, JRE_HOME usw. auf meine jdk (oder jdk / jre) -Lokation gesetzt habe.
RockMeetHardplace
5

Hatte das gleiche Problem, aber in meinem Fall zeigte die Verzeichnisfinsternis, dass die JRE das JDK war. Also suchte ich nach diesem tools.jar und war da.

Ich tat

  • Java Build Path >> Bibliotheken
  • JRE System Lybrary >> Bearbeiten
  • Installierte JREs >> Klicken Sie auf mein JDK >> Bearbeiten
  • Fügen Sie externe Gläser hinzu >> tools.jar

Und dann gut kompiliert

Hinotori
quelle
3

Die Variable JDK_HOME sollte immer auf das Basisverzeichnis des JDK zeigen, nicht auf das Bin-Verzeichnis:

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04

Das definierte, fixiere deinen Weg zu sein

C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\bin;C:\Program Files\Notepad++\;%JDK_HOME%\bin
Bruno Penteado
quelle
3

Es war ein Eclipse-Problem. Als ich versuchte, es über die Kommandozeile mit zu erstellen

mvn package

es hat gut funktioniert.

BKK
quelle
2

Es hört sich so an JDK_HOME, als hätten Sie eine Benutzervariable und PATHeine Systemvariable definiert oder umgekehrt - echo %PATH%sollte keine ungelösten Variablen wie enthalten ...;%JDK_HOME%.

Stellen Sie sicher, dass sich der %JDK_HOME%\binPfad in Ihrer PATH-Variablen befindet und nicht aufgelöst ist, auch wenn Sie den Pfad explizit eingeben müssen.

matt b
quelle
2

Ich hatte den gleichen Fehler, wegen der JUNIT-Version hatte ich 3 3.8.1 und ich habe zu 4.8.1 gewechselt.

Die Lösung ist also

Sie müssen zu POM gehen und sicherstellen, dass Ihre Abhängigkeit so aussieht

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
Ibo
quelle
2

Für andere, die in Eclipse mit diesem Problem konfrontiert sind, müssen Sie die anderen JREs aus den installierten JREs entfernen, auch wenn der Pfad korrekt auf JDK eingestellt ist.

Gehen Sie zu Fenster -> Einstellungen -> Java -> Installierte JREs

Wählen Sie nicht verwendete JREs einzeln aus und entfernen Sie sie

Es hat bei mir funktioniert.

HeXMaN
quelle
1

Ich habe alle oben genannten Vorschläge ausprobiert, was bei mir nicht funktioniert hat, aber ich habe herausgefunden, wie ich den Fehler in meinem Fall beheben kann.

Die folgenden Schritte haben das Projekt erfolgreich kompiliert:

Klicken Sie im Projektexplorer mit der rechten Maustaste auf das Projekt und wählen Sie "Eigenschaften". Gehen Sie in der Baumstruktur rechts zum Java-Erstellungspfad. Wählen Sie die Registerkarte "Bibliotheken". Klicken Sie auf "Bibliothek hinzufügen". Wählen Sie JRE-Systembibliothek. Weiter klicken. Wählen Sie das Optionsfeld Alternative JRE. Klicken Sie auf "installierte JREs". Wählen Sie die JRE mit der richtigen Version. Klicken Sie auf Übernehmen und schließen Sie. Klicken Sie im nächsten Bildschirm auf Fertig stellen. Klicken Sie im Eigenschaftenfenster auf Übernehmen und schließen. Klicken Sie im Projektexplorer mit der rechten Maustaste auf Ihre pom.xml und wählen Sie Ausführen als> Maven Build. Schreiben Sie in das Zieltextfeld "Installieren". Klicken Sie auf Ausführen.

Dadurch wurde das Projekt in meinem Fall erfolgreich erstellt.

FunkyFeudalFox
quelle
0

In Eclipse werden Aktionen wie das Importieren von Maven-Projekten oder das Aufrufen von "Update Sources" in derselben JVM ausgeführt, in der Eclipse ausgeführt wird. Wenn diese JVM von JRE stammt, die nicht Teil von JDK ist, gibt es keinen Java-Compiler (die tools.jar).

Um Maven aus Eclipse heraus zu starten, muss JRE, das für den Start verwendet wird, auch von JDK stammen. Standardmäßig registriert Eclipse JRE, in dem es gestartet wird. Dies kann jedoch auf der Einstellungsseite "Fenster / Einstellungen ... / Java / Installierte JREs" konfiguriert werden, wie oben von Parthasarathy erwähnt

Alternativ können Sie die compilerId in der Datei pom.xml angeben, damit Maven beim Kompilieren von Java-Code nicht nach JDK sucht:

 <plugin>
  <artifactid>maven-compiler-plugin</artifactid>
  <configuration>
    <compilerid>eclipse</compilerid>
  </configuration>
  <dependencies>
    <dependency>
      <groupid>org.codehaus.plexus</groupid>
      <artifactid>plexus-compiler-eclipse</artifactid>
      <version>xxxx</version>
    </dependency>
  </dependencies>
</plugin>
san1deep2set3hi
quelle
0

Ich bin auf ein ähnliches Problem gestoßen, und da niemand einen ähnlichen Ansatz wie ich veröffentlicht hat, gehe ich.

Navigieren Sie zu der Ausführungskonfiguration, die Sie starten möchten.
Dort wählte die Registerkarte JRE. Stellen Sie dort die "Laufzeit-JRE" ein und Sie können loslegen.

Vogel612
quelle
0

Ich kann durch folgende Schritte eine Lösung finden:

Klicken Sie mit der rechten Maustaste auf das Projekt, wählen Sie Erstellungspfad -> Konfigurationspfad konfigurieren -> wählen Sie die Registerkarte Bibliotheken -> wählen Sie dann JRE-Systembibliothek [Version, für die Sie JavaSE-1.7 haben] -> klicken Sie auf die Schaltfläche Bearbeiten -> Wählen Sie im Fenster JRE-Systembibliothek die Option Ausführungsumgebung - In der Dropdown-Liste können Sie das für mich aufgelistete JDK JavaSE-1.7 auswählen -> neben diesem klicken Sie auf die Schaltfläche Umgebungen -> Im Fenster Ausführungsumgebungen müssen Sie erneut Ihr Java SE für mich JavaSE-1.7 auswählen -> wählen Sie es einfach aus Sie haben Optionen auf der Registerkarte Kompatible JREs. Wählen Sie also JDK aus, das in meinem Fall jdk1.7.0_25 sein soll.


Klicken Sie auf OK und beenden Sie die restlichen Fenster, indem Sie die entsprechende Aktion OK / Fertig stellen ausführen.

Zuletzt Maven Clean und Maven Install.

Du bist toll
quelle
Diese Antwort wäre besser, wenn angegeben wäre, welche Anwendung Sie verwenden. :)
JakeRobb
0

Es hängt von der Maven-Version ab. Wenn Sie eine neuere Version von Maven installieren, wird dieser Fehler nicht angezeigt. Sie können auch ein anderes Verzeichnis mit der Datei tools.jar lib / tools.jar hinzufügen - dies löst auch dieses Problem.

Bolek
quelle
0

Wenn Sie alle oben genannten Schritte ausführen, die möglicherweise verwirrt sind und bei unserem Problem nur tools.jre fehlt, fügen Sie einfach tools.jre mit den folgenden Schritten hinzu, und das Problem ist behoben.

Schritt 1: Gehen Sie in Eclipse zu Windows -> Einstellungen

Schritt 2: Java -> Installierte JREs (Doppelklicken Sie darauf)

Schritt 3: Klicken Sie auf die Schaltfläche Bearbeiten -> Klicken Sie auf Externe JARs hinzufügen

Schritt 4: Wählen Sie nun den Pfad tools.jar aus

Jetzt Änderungen anwenden und es funktioniert gut.

Hier ist ein Screenshoot

Ravindra
quelle
0

Obwohl es oben einige Nicht-Eclipse-Antworten für diese Frage gibt, in denen Eclipse nicht erwähnt wird, sind Änderungen der Pfadvariablen erforderlich. Eine Alternative ist die Verwendung der Befehlszeilenoption java.home, z.

mvn package -Djava.home="C:\Program Files\Java\jdk1.8.0_161\jre"

Beachten Sie das \ jre am Ende - eine überraschende Notwendigkeit.

Colin McRae
quelle
0

Keine der aktuellen Antworten hat mir hier geholfen. Wir bekamen so etwas wie:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:
    #.#.#:compile (default-compile) on project Streaming_Test: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] /opt/java/J7.0/../lib/tools.jar

Dies liegt daran, dass die Java-Installation festgestellt hat, dass es sich um eine JRE-Installation handelt. Es wird erwartet, dass sich JDK-Inhalte über dem JRE-Unterverzeichnis befinden, daher das ../libim Pfad. Unser tools.jarist in $JAVA_HOME/lib/tools.jarnicht in $JAVA_HOME/../lib/tools.jar.

Leider haben wir keine Option, ein JDK auf unserem Betriebssystem zu installieren (fragen Sie nicht), so dass dies keine Option war. Ich habe das Problem behoben, indem ich dem Maven Folgendes hinzugefügt habe pom.xml:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <fork>true</fork>  <!-- not sure if this is also needed -->
      <executable>${JAVA_HOME}/bin/javac</executable>
      <!--        ^^^^^^^^^^^^^^^^^^^^^^ -->
    </configuration>
  </plugin>

Indem wir die ausführbare Datei auf die richtige Stelle zeigen, haben wir zumindest unsere Kompilierungsfehler überwunden.

Grau
quelle
-1

Stellen Sie für Intellij Idea alles entsprechend ein (ähnlich wie hier):

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_60
JRE_HOME = JAVA_HOME\jre

und vergessen Sie nicht, Idea neu zu starten . Dieses Programm nimmt beim Start Variablen auf, sodass Änderungen an Umgebungsvariablen während der Ausführung des Programms keine Auswirkungen haben.

Václav Blažej
quelle