Eclipse / Maven-Fehler: "In dieser Umgebung wird kein Compiler bereitgestellt."

77

Ich bin ein relativer Neuling in der Welt der Java-Unternehmensentwicklung. Der Java-Guru meiner Organisation ist auf unbestimmte Zeit in Familienurlaub, und mir wurde die Aufgabe übertragen, einige der von ihm entwickelten Java-Anwendungen zu warten. Er hat Eclipse [Kepler SR1] mit Maven auf meinem Computer eingerichtet, bevor er gegangen ist, und es schien in Ordnung zu sein.

Jetzt bin ich bereit, meine erste Änderung bereitzustellen und muss einen Maven ausführen install, aber ich habe Probleme, ihn zum Laufen zu bringen - ich erhalte die folgende Ausgabe auf meiner Konsole:

[FEHLER] Fehler beim Ausführen des Ziels org.apache.maven.plugins: maven-compiler-plugin: 3.1: Kompilieren (Standardkompilierung) im Projekt mrpapp: Kompilierungsfehler
[ FEHLER ] In dieser Umgebung wird kein Compiler bereitgestellt. Vielleicht laufen Sie eher auf einer JRE als auf einem JDK?

aber ich auf jeden Fall bin läuft ein JDK und kein JRE. Ich habe mein $JAVA_HOME( C:\Program Files (x86)\Java\jdk1.7.0_60) doppelt überprüft und es hat ein javac.exein seinem binVerzeichnis.

Ich füge eine Kopie meiner pom.xmlDatei zur Überprüfung bei. Ich bin mir sicher, dass etwas drin ist, das das Problem verursacht, aber ich bin mir nicht sicher, was es sein könnte. Ich verwende einen Laptop mit Windows 7 64-Bit. Wenn Sie weitere Plattform- / Umgebungsinformationen benötigen, kann ich diese ebenfalls bereitstellen.

Jede Hilfe wird sehr geschätzt.

Ken L.
quelle
Was sagt es in Eclipse unter, wenn Sie auf Fenster-> Einstellungen-> Java-> Compiler klicken? Wenn dies nicht der Fall ist, können Sie auch Ihre Datei eclipse.ini überprüfen, um sicherzustellen, dass sie nicht auf eine Java JRE-Installation verweist.
Robert Beltran
5
Angenommen, der Eclipse-Build schlägt fehl, haben Sie versucht, einen Maven-Befehl (z. B. mvn install) direkt über die Befehlszeile auszuführen? Eine dieser beiden Fragen kann auch helfen: stackoverflow.com/questions/19655184/… und stackoverflow.com/questions/15220392/…
andersschuller
1
Öffnen Sie ein Befehlsfenster und geben Sie ein, javac -vob es funktioniert.
Henry
Es ist schwieriger herauszufinden, welches Java Ihren Build tatsächlich ausführt, als es sein sollte. Versuchen Sie es auszuführen mvn help:systemund überprüfen Sie, ob die Umgebungseinstellungen und Systemeigenschaften Ihren Erwartungen entsprechen.
Gus
2
@andersschuller hat einen wirklich guten Punkt - schlägt dies über die Befehlszeile oder über Eclipse fehl?
Gus

Antworten:

157

Gehen Sie zu Fenster → Einstellungen → Java → Installierte JREs.

Überprüfen Sie, ob ein Eintrag auf Ihren JDK-Pfad verweist. Wenn nicht, klicken Sie auf die Schaltfläche Bearbeiten und geben Sie den Pfad ein, den Sie für Ihre JAVA_HOMEUmgebung konfiguriert haben.

Jorge Campos
quelle
4
Danke euch beiden! Ich ging zu Fenster-> Einstellungen-> Java-> Installierte JREs und sah, dass unter meinem Standard ein anderer Pfad aufgeführt war. Ich habe diese entfernt und als ich versuchte, die Maven-Installation durchzuführen, lief sie ohne Fehler. Problem gelöst!
Ken L
2
Hat für mich gearbeitet. Sogar es wurde jre8 Speicherort angegeben (von Programmdateien (x86)). Ich habe es in jre7..worked geändert.
Anil Bhaskar
es funktioniert für mich, aber es ist wirklich komisch ..! Hat jemand eine andere mögliche Lösung gefunden?
Dwhitz
@Dhn Was meinst du es ist komisch? Wenn Sie über den Fehler selbst sprechen, ist es überhaupt nicht seltsam. Eines der Ziele von Maven ist das Kompilieren von Java-Code. Daher wird das JDK anstelle des JRE benötigt.
Jorge Campos
Es ist seltsam, weil Eclipse ein JDK als JRE haben möchte. Und ich habe auch viele andere Fehler, weil ich das gleiche Projekt mit Intellij importiert habe und es sofort einen Fehler wie "Ungültiges JRE" anzeigt. Darüber hinaus werden viele andere conf und libs nicht für das falsche jre erkannt.
Dwhitz
22

Screenshot Fügen Sie 'tools.jar' zur installierten JRE hinzu.

  1. Eclipse-> window-> preference.
  2. Wählen Sie installed JREs->Edit
  3. Fügen Sie externe Gläser hinzu
  4. Wählen Sie tools.jaraus dem java/JDKx.x/libOrdner.
  5. Klicken Sie auf Fertig stellen
Sibabrata
quelle
Das ist die Lösung. Das Hinzufügen von tools.jar hat das Problem für mich gelöst.
Zygimantus
1
Ich kann keine tools.jar in jdk-10.0.1 finden.
Digitig
12

Ich habe alle Dinge ausprobiert; Das, was für mich funktioniert hat, ist:

  1. Klicken Sie mit der rechten Maustaste auf Eclipse-Projekt und navigieren Sie zu den Eigenschaften.
  2. Klicken Sie auf Java Build Path und wechseln Sie zur Registerkarte Libraries.
  3. Überprüfen Sie, welche Java-Version dort hinzugefügt wird. ist es JRE oder JDK?
  4. Wenn Sie das Maven-Projekt verwenden und eine Lösung erstellen möchten.
  5. Wählen Sie die hinzugefügte JRE aus und klicken Sie auf Entfernen.
  6. Klicken Sie auf Externen Klassenordner hinzufügen und fügen Sie die JDK-Installation hinzu, indem Sie im System auswählen.
  7. Klicken Sie auf Übernehmen und auf OK.
  8. Starten Sie Eclipse neu.
  9. Build erfolgreich.
Archana Prasad
quelle
Richtig ! Es hat bei mir funktioniert, nachdem ich Eclipse in den Einstellungen mit JDK konfiguriert und das Projekt neu erstellt habe, tritt dieses Problem immer noch auf. Und die obige Lösung hat funktioniert.
Badr DRAIFI
8

Fügen Sie diese Konfigurationen in pom.xml hinzu

<project ...>
    ...
    <build>
        ...
        <plugins>
            <plugin>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <fork>true</fork>
                    <executable>C:\Program Files\Java\jdk1.7.0_79\bin\javac</executable>
                </configuration>
            </plugin>
        </plugins>
    </build>
    ...
</project>
AnuradhaS
quelle
4

Das hat bei mir funktioniert. 1. Klicken Sie auf Fenster-> Einstellungen -> Installierte JRE. 2. Überprüfen Sie, ob Ihre Referenz für JDK gilt (siehe Abbildung unten). Geben Sie hier die Bildbeschreibung ein

Wenn nicht, klicken Sie auf Hinzufügen-> Standard-VM -> Geben Sie den JDK-Pfad an, indem Sie das Verzeichnis auswählen, und klicken Sie auf Fertig stellen (siehe Abbildung) Geben Sie hier die Bildbeschreibung ein

  1. Klicken Sie im letzten Schritt auf Installierte JREs -> Ausführungsumgebungen -> wählen Sie Ihre JDE aus (siehe Abbildung unten) Geben Sie hier die Bildbeschreibung ein

  2. Maven -> Reinigen

Swathi Shetty
quelle
3

Ich hatte auch einen ähnlichen Fehler, als ich mit Jdk1.8_92 arbeitete. Für mich fand ich tools.jar fehlte in meinem jdk-Ordner. Da ich in der Konsole lief, konnte ich die von anderen vorgeschlagenen Optionen für Eclipse nicht ausprobieren.

Ich habe jdk-8u92-windows-x64 installiert. Nachdem ich alle Optionen ausprobiert hatte, stellte ich fest, dass tools.jar im Ordner jdk1.8.0_92 / lib fehlte. Ich habe tools.jar von meiner älteren Java-Version kopiert. Dann konnte es kompilieren.

Manish
quelle
2

Bitte überprüfen Sie, ob Sie die folgenden Einträge im Element Ihrer pom.xml haben, insbesondere die jdk.version, da der Wechsel zu einem installierten jre den ähnlichen Fehler nicht behoben hat.

<properties>
    <jdk.version>1.7</jdk.version>
    <spring.version>4.1.1.RELEASE</spring.version>
    <jstl.version>1.2</jstl.version>
    <junit.version>4.11</junit.version>
</properties>
Balaji
quelle
2

Wenn jemand Eclipse in Ubuntu ausführt und dieses Problem hat, habe ich die Antwort folgendermaßen gefunden:

  1. Eclipse-> Fenster-> Präferenz.
  2. Wählen Sie installierte JREs-> Hinzufügen
  3. Wählen Sie standardVM.
  4. JRE home: Drücken Sie die [Directory ..] - Taste.
  5. Wählen Sie Ihr Java (mein Problem war, dass meine Eclipse mit Java8 ausgeführt wurde und meine VM mit Java7). In meinem Fall wurde Java8 in usr / local / jvm / java-8-oracle installiert.
  6. Drücken Sie auf Fertig stellen.
  7. Drücken Sie dann den installierten JRES-Pfeil, damit Sie die anderen Optionen sehen können.
  8. Gehen Sie zur Ausführungsumgebung.
  9. Wählen Sie links JavaSE-1.6 und rechts (die kompatible JRE) müssen Sie das gerade installierte Java auswählen (in meinem Fall Java-8-Oracle). Sie müssen diese Schritte mit JavaSE1.8 ausführen.
  10. Klicken Sie auf OK und starten Sie Eclipse neu.
Marcelo Gomez
quelle
2

Beim Versuch, einen Maven-Build in Eclipse in einer neu installierten Eclipse Neon-Installation (für JEE-Entwickler) unter Windows 10 mit installiertem JDK 8 und JRE 8 auszuführen, wurde der gleiche Fehler angezeigt.

Ich hatte versucht, tools.jar als externe Bibliothek anzugeben und das jdk als -vm in Eclipse festzulegen. Keines dieser Dinge funktionierte.

Die Auswahl des JDK als Standardausführungsumgebung wie oben erwähnt hat den Trick ausgeführt.

  1. Eclipse-> Fenster-> Einstellungen-> Java-> Installierte JREs-> Ausführungsumgebungen.
  2. Wählen Sie JavaSE-1.8
  3. Überprüfen Sie JDK1.8 unter "Kompatible JREs".

Der Text über dem Listenfeld kompatibler JREs in Schritt 3 lautet "Eine Standard-JRE kann durch Aktivieren angegeben werden".

Hinweis: Ich habe auch das Maven-Compiler-Plugin, das explizit 1.8 im POM auflistet

    <plugin>  
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>3.1</version>
        <configuration>
            <source>1.8</source>
            <target>1.8</target>
        </configuration>
    </plugin>
Tim
quelle
2

Installierte JRE In meinem Fall habe ich das Problem durch Entfernen von Duplikaten von Namen gelöst und nur eine mit dem Namen jdk.1.8.0_101 beibehalten

Mohammed BOUTCHEKKOUCHT
quelle
2

Folgen Sie: Windows -> Einstellungen -> Java ---> Installierte JREs

SampleImage

Klicken Sie auf " Suchen .."

Navigieren Sie zu Laufwerk C ---> Programme programmieren

Beispielbild 2

Eclipse findet alle jre's und jdk's -> wählen Sie eines der jdk und wählen Sie Apply

Mayur Chavan
quelle
1

In meinem Fall hatte ich eine Ausführungskonfiguration erstellt, und bei jedem Versuch, sie auszuführen, wurde der Fehler angezeigt. Nach der Suche auf einigen Websites habe ich die Ausführungskonfiguration bearbeitet und auf der Registerkarte JRE die Laufzeit-JRE als 'Arbeitsbereich-Standard-JRE' ausgewählt, die ich bereits so konfiguriert hatte, dass sie auf meine lokale Java JDK-Installation verweist (z. B. C: \ Programme (x86)). \ Java \ jdk1.8.0_51). Dies löste mein Problem. Vielleicht hilft es jemandem da draußen.

Jatin Shashoo
quelle
1

Das gleiche Problem trat auf. Ich habe Java in Eclipse auf den Ordner bin verwiesen, indem ich Folgendes verwendet habe: Windows> Einstellungen> Java> installierte JREs> vorhandene JRE entfernen und auf Ihren Java-Bin-Ordner verweisen (hauptsächlich unter C: \ Programme \ Java \ jdk1.8) .x_xx).

Führen Sie dann maven install aus, damit es funktioniert.

Rajan Chauhan
quelle
1

Öffnen Sie eine Befehlszeile und geben Sie Folgendes ein, um zu überprüfen, was Ihr Maven verwendet:

mvn –version

Stellen Sie sicher, dass JAVA_HOME auf ein JDK-Home und nicht auf eine JRE verweist

Unter Windows:

Gehen Sie zu Systemeigenschaften -> Erweiterte Systemeinstellungen -> Erweitert -> Umgebungsvariable und wählen Sie im Abschnitt Systemvariablen die Variable JAVA_HOME aus und klicken Sie auf Bearbeiten. Füllen Sie das Formular mit dem folgenden Variablennamen aus: JAVA_HOME Variablenwert:

Unter Unix:

export JAVA_HOME=<ABSOLUTE_PATH_TO_JDK>

siehe diesen Link

Ucup Timposu
quelle
1

Als ich lief mvn compile, wurde in der Konsole der folgende Fehler angezeigt :

[INFO] Changes detected - recompiling the module!
[WARNING] File encoding has not been set, using platform encoding Cp1252, i.e. build is platform dependent!
[INFO] Compiling 1087 source files to C:\Code\DevVNextComplete\Development_vNext\Source\JARS\target\classes
[INFO] -------------------------------------------------------------
[ERROR] COMPILATION ERROR :
[INFO] -------------------------------------------------------------
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
[INFO] 1 error

[Auflösung]

Ich hatte die Variable JAVA_HOME in meine Umgebungsvariablen aufgenommen und dann funktionierte es.

Geben Sie hier die Bildbeschreibung ein

Vaibhav Sharma
quelle
0
  1. Deinstallieren Sie älteres Java (JDK / JRE) vom System (behalten Sie eine (neueste) Java-Version bei). Entfernen Sie auch alte Java-JRE / JDK-Einträge in den Umgebungsvariablen PATH / CLASSPATH
  2. Eclipse-> Fenster-> Einstellungen-> Installierte JREs-> JDK aus der letzten Installation hinzufügen / bearbeiten
  3. Eclipse-> Fenster-> Einstellungen-> Installierte JREs-> Ausführungsumgebung-> Wählen Sie links die gewünschte Java-Version aus und aktivieren Sie das Kontrollkästchen rechts
  4. Wenn Sie maven verwenden, fügen Sie das folgende Tag in pom.xml (Versionen nach Bedarf aktualisieren) in das Plugins-Tag ein.

    <plugin>  
            <groupId>org.apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>1.8</source>
                <target>1.8</target>
            </configuration>
        </plugin>
    
  5. Klicken Sie mit der rechten Maustaste auf Eclipse-Projekt Maven -> Projekt aktualisieren
Bruce
quelle
0

Bei mir (unter Windows 10) wurde bei der Ausführung an der Windows-Eingabeaufforderung die Fehlermeldung "In dieser Umgebung wird kein Compiler bereitgestellt" angezeigt mvn install. Das Update hat die Umgebungsvariable JAVA_HOME so geändert , dass sie auf mein JDK verweist (C: \ Programme \ Java \ jdk1.8.0_101). zuvor hatte es auf den jre hingewiesen.

Und damit Eclipse das neue JDK verwendet, habe ich eclipse.inimeine Eclipse-Distribution bearbeitet und die Zeile für -vmin geändert C:\Program Files\Java\jdk1.8.0_101\bin.

Don Smith
quelle
0

Überprüfen Sie die Java-Version in pom.xml und die JRE-Version in Eclipse-> Fenster-> Einstellungen-> Installierte JREs. In meinem Fall hat pom.xml eine andere Version (es hatte 1.8 während Eclipse mit 1.7). Das Korrigieren der Version in pom.xml auf 1.7 hat funktioniert.

user3610547
quelle
0

Wenn Sie außerhalb von Eclipse im Befehlsfenster arbeiten,
stellen Sie sicher, dass Sie über das richtige JAVA_HOME verfügen und dass dieses Verzeichnis den Compiler enthält, indem Sie den folgenden Befehl in das Befehlsfenster eingeben:

dir %JAVA_HOME%\bin\javac.*
inor
quelle
0

1. Gehen Sie zu Windows -> Einstellungen -> Java -> Installierte JREs -> Ausführungsumgebungen

2.Wählen Sie die aktuell verwendete Java-Version im Feld "Ausführungsumgebungen" aus. Damit Sie im Feld "Kompatible JREs" " jre1.8.0_102 [perfekte Übereinstimmung] " sehen können (wenn Ihre Java-Version 1.8 ist). Versuchen Sie dann, mit Maven zu bauen.

Ramprakash
quelle
0

Maven benötigt JDK zum Kompilieren. In Eclipse müssen Sie Ihre JRE in den JDK-Pfad ändern / ERSETZEN, auf den Ihr JAVA_HOME verweist. Navigieren Sie zu Fenster> Einstellungen> Java> Installierte JREs.

Stellen Sie sicher, dass das Maven-Compiler-Plugin in Ihrer pom.xml die Quelle und das Ziel der Java-Version in Ihrem JAVA_HOME enthält

http://learn-automation.com/maven-no-compiler-is-provided-in-this-environment-selenium/

rnyunja
quelle
0

Stellen Sie sicher, dass Sie festgelegt haben %JAVA_HOME%, indem Sie die echo %JAVA_HOME%Eingabeaufforderung eingeben . Wenn Sie diesen Satz nicht festgelegt haben, müssen Sie Ihren Java-Pfad zu den Umgebungsvariablen von Window hinzufügen.

Gen
quelle
-1

Ich hatte ein Problem mit Eclipse Neon, bei dem sich die Standardeinstellung des Arbeitsbereichs nicht geändert hat, obwohl ich unter Einstellungen-> Java-> Installierte JREs den richtigen Speicherort hinzugefügt habe. Dies war in einem neuen Arbeitsbereich, den ich erstellt habe, um an einem Code-Zweig zu arbeiten. Es wurde ursprünglich auf den JRE-Speicherort und nicht auf das JDK festgelegt. Selbst nachdem ich die Einstellungen geändert hatte, konnte ich mit der Befehlszeile erstellen, aber das Erstellen in Eclipse erzeugte den Fehler no compiler. Bitte sehen

Maven Package Compilation Error

für meine Antwort, welche Eclipse-Konfigurationsdatei (en) manuell bearbeitet werden mussten, damit Eclipse den richtigen Arbeitsbereich als Standard erkennt. Ich habe immer noch keine Ahnung, warum die Einstellungen nicht in die Konfiguration des neuen Arbeitsbereichs übernommen wurden.

Michael P Stein
quelle