Ich kompiliere ein Projekt in Eclipse mit m2Eclipse. Ich habe den JDK-Pfad in Eclipse folgendermaßen festgelegt:
Windows-->preferences-->installed jres--> jdk1.7.xx path
Dies zeigt aber einen Fehler
[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
[INFO] -------------------------------------------------------------
[INFO] ------------------------------------------------------------------------
[INFO] BUILD FAILURE
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 1.424s
[INFO] Finished at: Tue Oct 29 15:21:01 IST 2013
[INFO] Final Memory: 5M/15M
[INFO] ------------------------------------------------------------------------
[ERROR] Failed to execute goal org.Apache.maven.plugins:maven-compiler- plugin:3.1:compile (default-compile) on project TEST-WEB: Compilation failure
[ERROR] No compiler is provided in this environment. Perhaps you are running on a JRE rather than a JDK?
Darüber hinaus müssen Sie möglicherweise Maven JRE (siehe @ jlars62 Antwort) wie folgt ändern. Gehen Sie zu Run -> Run Configurations und wählen Sie den Maven Build aus, den ich ausgeführt habe (im linken Bereich). Dann habe ich auf die Registerkarte JRE geklickt und die Option Standard-JRE für den Arbeitsbereich ausgewählt
Für mich ist es genau das, was der Eclipse-Riese beklagt
Also drücke ich die Taste Edit
und ändere den Pfad zum JDK-Ordner. Dann bereinige ich das Projekt und alles beginnt zu funktionieren
Bei mir hat nichts funktioniert, bis ich diese Änderung an meiner pom.xml vorgenommen habe:
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
</build>
Sonstige Hinweise
Ich konnte sehen, dass m2e in einer JRE ausgeführt wurde, nicht im JDK. Nichts, was ich geändert habe, einschließlich des Hinzufügens dieser Datei zur Eclipse.ini:
-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe
Letztendlich habe ich m2e nie in einem JDK ausführen lassen, aber das explizite Setzen des Compilers Java (wie oben) hat den Trick getan.
Java_HOME
auf den JDK-Stammordner - erforderlich, wenn Sie eine Befehlszeile oder einen Maven ausführen (mvn
). Java_HOME
, um weitere Informationen zu erhalten.)Ich habe diesen Fehler erhalten, als ich versucht habe, einen Maven-Build aus Eclipse heraus zu erstellen.
Für mich ging die Antwort auf Run
-> Run Configurations
und wählte den Maven Build
aus, den ich ausgeführt habe (im linken Bereich). Dann klickte ich auf die Registerkarte JRE
und wählte die Option Workspace default JRE
In meinem Fall wurde dies folgendermaßen gelöst:
Gehen Sie zu Ihrer 'Laufzeitkonfiguration' und konfigurieren Sie Ihre JRE für ein JDK.
Ich habe die Antwort nur für den Fall kopiert, dass sie aus irgendeinem Grund gelöscht wird, aber die Quelle ist hier
Gehen Sie zu Windows -> Einstellungen -> Java -> Installierte JREs
kann sein, dass jre bereits hinzugefügt ist
klicken Sie auf Hinzufügen -> Standard VM -> Weiter -> Verzeichnis
und suchen Sie nach dem JDK in meinem Fall Pfad war C:\Program Files\Java\jdk1.8.0_111
klicken Sie dann auf Fertig stellen.
sie werden Fenster wie folgt sehen
wählen Sie JDK -> Apply -> Ok
Und du bist fertig.
Ich habe versucht, alle oben genannten, jedoch immer noch die gleiche Fehlermeldung.
In meinem Fall wurde eine tatsächliche JRE fälschlicherweise als JRE-Systembibliothek im projektspezifischen Erstellungspfad verwendet, wodurch offensichtlich alle anderen hier beschriebenen Einstellungen außer Kraft gesetzt wurden.
Wenn dies in Ihrem Fall der Fall ist, versuchen Sie Folgendes:
Ich habe das gleiche Problem und füge Java_HOME
zu Umgebungsvariablen hinzu.
Java_HOME
die Eingabeaufforderung aus dem Projektverzeichnis und führen Sie mvn clean install
aus (verwenden Sie kein intellij-Terminal).Eine Alternative, wenn die Antwort von jaipster nicht funktioniert, ist:
Fenster> Einstellungen> Java> Installierte JREs
Bearbeiten Sie anschließend die JRE so, dass sie auf die JDK und nicht auf die JRE verweist (die JRE-Startseite, die im JRE-Paketeditor abgelegt wurde).
Das hat bei mir geklappt.
Wenn Sie den Befehl Maven
in cmd
ausführen, stellen Sie sicher, dass Sie den Pfad jdk festgelegt haben, bevor Sie den Befehl ausführen. In meinem Fall habe ich eine .bat
-Datei erstellt, die Folgendes enthält:
set Java_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"
Ich hatte das gleiche Problem beim Versuch, eine JAR-Datei meiner Projektanwendung mit mvn clean install
zu erstellen, obwohl die Anwendung unter Eclipse einwandfrei funktionierte.
Das Problem war in der Tat zu naiv, dass ich die Umgebungsvariable Java_HOME nicht gesetzt hatte. Ich musste lediglich die Umgebungsvariable Java_HOME auf das JDK-Verzeichnis setzen. Stellen Sie sicher, dass dies nicht vor "\ bin" und ohne Semikolon ";" erfolgt.
Wie ich es verstanden habe, ist wie folgt:
Die Anwendung funktionierte in Eclipse einwandfrei, da sich JRE-Systembibliothek auf JRE innerhalb des JDK-Ordners anstelle des externen JRE-Ordners ohne JDK bezog. [Wie in anderen Antworten sehr gut erklärt]
Diese Konfiguration gilt nicht für den Befehl maven , den wir auf der Eingabeaufforderung ausführen. Es wird weiterhin nach der Variablen Java_HOME gesucht, um auf die JRE-Systembibliothek zuzugreifen. Wenn sie nicht gefunden wird, verweist sie auf einen externen JRE-Ordner ohne JDK.
Es sind mehrere Optionen anzugeben.
Schritte: Direkt am Projekt im Projektexplorer Gehen Sie zu Ausführen -> Konfiguration ausführen -> Klicken Sie auf Maven Build -> Klicken Sie auf Ihre Build-Konfiguration/oder erstellen Sie eine neue Konfiguration. Das Fenster wird unten als gegebener Schnappschuss angezeigt. Klicken Sie dort auf die Registerkarte JRE.
Sie sehen, dass Sie 3 Optionen haben 1) Standard-JRE für den Arbeitsbereich 2) Ausführungsumgebung 3) Alternatives JRE 1) Workspace Default JRE wird über das 'Window'-Menü oben eingestellt -> Preferences -> Java -> Installed JREs - Hier können Sie Ihr jdk hinzufügen
2) Ausführungsumgebung jdk kann wie von @ksnortum erwähnt in pom.xml eingestellt werden
<build>
<plugins>
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable>C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
3) Alternatives JRE kann verwendet werden, um ein JDK aus Ihrem Verzeichnis auszuwählen
Für mich war die JRE in der Umgebungsvariablen PATH vor dem JDK-Pfad
Also habe ich 1. entfernt. Wahrscheinlich würde das Vertauschen auch das Problem beheben.
Meine Antwort bezieht sich auf die Eclipse in Windows-Umgebung.
Ich ging zu Einstellungen -> Java -> Installierte JREs. Ich habe das JDK hier NICHT gesehen. Ich habe nur die JRE hier gesehen. Also habe ich das JDK hinzugefügt und dann die JRE deaktiviert. Dann überprüfte JDK. Dann habe ich die POM-Datei mit Run Configurations ausgeführt. Wählen Sie die Registerkarte JRE und wählen Sie die Option "Workspace Default ...". Hier sind die Bilder
Problemstellung = In dieser Umgebung ist kein Compiler vorhanden. Vielleicht laufen Sie eher auf einer JRE als auf einem JDK? intellij
Lösung
Bitte setzen Sie die mgebungsvariable e wie unten, um das Problem zu lösen
Variablenname: Java_HOME
Variablenwert: C:\Programme\Java\jdk1.8.0_202
Variablenname: M2_HOME
Variablenwert: C:\Programme\Apache-maven-3.6.0
Darüber hinaus, Java und maven-Pfad in "Systemvariablen" wie folgt hinzufügen:
C:\Programme\Java\jdk1.8.0_202\bin
C:\Programme\Apache-maven-3.6.0\bin
Ich habe eine Lösung.
Die gebräuchlichste Lösung für dieses Problem besteht darin, jdk location als meine installierten JREs zu ändern. ) anstelle des JRE-Speicherorts , aber das hat mein Problem dieses Mal nicht gelöst.
Also habe ich das Folgende getan, um das Problem zu lösen. Erweitern Sie die Registerkarte Installierte JREs und Sie finden eine Registerkarte Ausführungsumgebungen .
Klicken Sie auf Ihre bevorzugte Ausführungsumgebung. In meinem Fall war es JAVASE-1.8 . Dort zeigt es 2 Möglichkeiten. JDK und JRE . Wählen Sie dort JDK und das Problem ist gelöst.
Es gibt eine andere mögliche Antwort auf diese Frage, und ich bin vielleicht die einzige Person, die dumm genug ist, darüber gestolpert zu sein, aber ich denke, es lohnt sich, sie hinzuzufügen, da keine der anderen Antworten zutraf, da ich diese Einstellungen bereits richtig vorgenommen hatte.
Wenn Sie ein JDK installieren, werden Sie vom Installationsprogramm gefragt, wo Sie die Dateien installieren möchten. Unter Windows ist dies standardmäßig C:\Programme\Java\jdk1.8.0_74 (oder eine andere Version, die Sie installieren).
Anschließend werden Sie aufgefordert, ein Verzeichnis anzugeben, in das die JRE installiert werden soll. Standardmäßig lautet das Verzeichnis C:\Programme\Java\jre1.8.0_74.
Beachten Sie, dass einer jdk 1.8.0_74 und der andere jre 1.8.0_74 ist
Ich beeilte mich und dachte, das Installationsprogramm stelle mir zweimal die gleiche Frage. Setzen Sie sowohl die JDK- als auch die JRE-Installationsposition auf D:\devtools\jdk\jdk1.8.0_74, was dazu führte, dass das Installationsprogramm das JDK mit der JRE überschrieb. Dies führte (unter anderem) zu einer fehlenden javac.exe in meinem JDK-Bin und dem gleichen Fehler, den das OP hier in all meinen Maven-Builds gemeldet hat.
Ich habe gerade 3 Stunden mit diesem Problem verschwendet, bis ich es geschafft habe, es zum Laufen zu bringen. Ich hatte diesen Fehler im Eclipse-Terminal, als ich einen mvn-Kompilierungsbefehl ausgab:
In dieser Umgebung wird kein Compiler bereitgestellt. Möglicherweise verwenden Sie eine JRE anstelle eines JDK?
Ich habe hier gelesen, dass ich eine neue Systemvariable namens Java_HOME erstellen und sie auf den Installationsordner von jdk verweisen muss. Dies erzeugte jedoch einen weiteren Fehler:
Die Quelloption 1.5 wird nicht mehr unterstützt. Verwenden Sie 1.6 oder höher
Konnte keine Lösung für dieses Problem finden, also ...
Das Problem ist also, dass Sie Java SE Development Kit 8 installieren! Ich habe 9 verwendet und dachte, wenn es das ist spätestens muss es besser sein ...
Sowieso...
Installieren Sie JDK8 von hier: http://www.Oracle.com/technetwork/Java/javase/downloads/jdk8-downloads-2133151.html
Definieren Sie dann das Java_HOME-Systemumgebungs-Lernprogramm hier: https://docs.Oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/
Eclipse neu starten und genießen! (zumindest habe ich das getan)
Die Hoffnung, dass dies einem armen Wanderer Ärger erspart.
In meinem Fall hatte ich Systemvariablen Pfad hat "C:\ProgramData\Oracle\Java\Javapath" Speicherort.
In "C:\ProgramData\Oracle\Java\javapath" Java, nur dort javaw. Also bekomme ich den gleichen Fehler.
Nachdem ich alle Dateien im Ordner "C:\ProgramData\Oracle\Java\javapath" entfernt hatte, wurde mein Fehler behoben.
Beim Erstellen einer neuen EC2-Ubuntu-16.04-Instanz mit Java wurde derselbe Fehler angezeigt. Beim Ausführen von mvn clean package trat dieses Problem auf, und die folgende Lösung funktionierte für mich.
Wenn Sie auf einem Ubuntu-Server arbeiten, können Sie erneut versuchen, Java zu installieren. Verwenden Sie dazu diese Antwort So installieren Sie das JDK unter Ubuntu Linux
Versuche dies.
<build>
...
<plugins>
...
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.1</version>
<configuration>
<fork>true</fork>
<executable> path to jdk \bin\javac.exe</executable>
</configuration>
</plugin>
</plugins>
</build>
Neue JRE-Definition hinzufügen (Pfad JDK auswählen), hat für mich funktioniert.
ich hatte das gleiche Problem. Der Fehler, den ich gemacht habe, war, dass ich jre path nur in path var und nicht in jdk path hinzugefügt habe
Die meisten Antworten habe ich erfolglos ausprobiert. Was bei mir funktioniert hat, war (nachdem ich https://stackoverflow.com/a/21279068/240889 ):
Die Frage bezieht sich zwar auf den Fehler bei der Installation von Eclipse
, es kann jedoch hilfreich sein, diesen Fehler bei der Installation von IntelliJ
und Windows 10 zu beheben.
1 . Gehe zu File
-> Settings
-> Build, Execution, Deployment
-> Build Tools
-> Maven
-> Importing
2 . Setzen Sie JDK
für Importer
wie unten gezeigt auf Java_HOME
Außerdem sollte Java_HOME
unter Umgebungsvariablen -> Systemvariablen auf JDK
path gesetzt werden und %Java_HOME%\bin
zu Pfadsystemvariablen hinzugefügt werden
Zusätzlich zu der obigen Antwort könnte ich sagen, dass Sie versuchen, Maven vom Terminal aus (außerhalb von Eclipse) auszuführen. Auf diese Weise können Sie verstehen, dass das Problem in Eclipse auftreten sollte, wenn es von außen erstellt wird, jedoch nicht in Eclipse.
Es gibt mehrere Antworten zu dieser Frage, aber alle beziehen sich auf die Konfiguration des richtigen Pfades von JDK, aber nur mit JRE können wir dieses Problem lösen.
Sie müssen lediglich Deployment Assembly verwenden, um den Pfad der gepackten War-Datei des EE-Projekts Java zu konfigurieren und anschließend die maven-Installation erneut auszuführen.
Schritte zum Verwenden der Bereitstellungsassembly:
Klicken Sie mit der rechten Maustaste auf das Jave EE-Projekt -> klicken Sie auf Eigenschaften -> klicken Sie auf Bereitstellungsassembly
Klicken Sie auf die Schaltfläche Hinzufügen -> Klicken Sie auf Archive aus dem Dateisystem -> Klicken Sie auf Weiter -> Klicken Sie auf Hinzufügen -> Wechseln Sie in das Verzeichnis .m2\respository und suchen Sie nach der generierten War-Datei -> Wählen Sie die War-Datei aus -> Klicken Sie auf die Schaltfläche Öffnen -> Klicken Sie auf Übernehmen -> OK
Klicken Sie mit der rechten Maustaste auf das Projekt -> Klicken Sie unter Ausführen als auf Maven Install
Dadurch wird Ihr Projekt erfolgreich erstellt, ohne dass ein Compilerfehler auftritt.
Hoffe das löst das Problem ohne JDK.
Ich ging zu Einstellungen -> Java -> Installierte JREs. Ich habe das JDK hier NICHT gesehen. Ich habe nur die JRE hier gesehen. Also habe ich das JDK hinzugefügt.
hier müssen wir JRE zwingend entfernen, anstatt nur das Häkchen zu entfernen.
Vermissen Sie einen Maven Build?.
Abgesehen von den obigen JRE-Änderungen. Ich hatte immer noch ein ähnliches Problem. Mir fehlte die JUnit-Abhängigkeit, nachdem ich sie hinzugefügt hatte.
Hoffe das wird helfen.