Maven-Build fehlgeschlagen: "Der Javac-Compiler konnte nicht gefunden werden in: jre- oder jdk-Problem"

112

Ich habe mein JAVA_HOME auf Folgendes eingestellt:

C:\Program Files (x86)\Java\jdk1.6.0_18

Nachdem ich ausgeführt habe maven install, erhalte ich folgende Nachricht von Eclipse :

Grund:

Unable to locate the Javac Compiler in:
  C:\Program Files (x86)\Java\jre6\..\lib\tools.jar
Please ensure you are using JDK 1.4 or above and
not a JRE (the com.sun.tools.javac.Main class is required).
In most cases you can change the location of your Java
installation by setting the JAVA_HOME environment variable.

Ich bin sicher, dass dies der schwierige Teil ist

Bitte stellen Sie sicher, dass Sie JDK 1.4 oder höher und keine JRE verwenden

Wenn ich die Konfiguration ausführe, ist sie auf JRE6 eingestellt. Wie ändere ich es auf JDK 1.6, das ich bereits installiert habe?

Ich habe sogar versucht, das Plugin zu ändern:

<plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>2.0.2</version>
    <configuration>
        <source>1.6</source>
        <target>1.6</target>
        <executable>C:\Program Files (x86)\Java\jdk1.6.0_18\bin</executable>
    </configuration>
</plugin>

Trotzdem bekomme ich den gleichen Fehler.

Ich benutze das Eclipse Maven Plugin. Wie kann ich in Eclipse von JRE zu JDK wechseln?

Gandalf StormCrow
quelle
Haben Sie mit dem Befehlszeilenbefehl noch einmal überprüft set, ob JAVA_HOME auf das eingestellt ist, was Sie denken?
Powerlord
Ich benutze Java täglich .. alles funktioniert gut hier ist es: java -version .6.0_18-ea" time Environment (build 1.6.0_18-ea-b04) ) Client VM (build 16.0-b11, mixed mode, sharing)
Gandalf StormCrow
1
Setzen Sie <fork> true </ fork>, wenn Sie die ausführbare Datei festlegen.
Robin
Das sagt uns eigentlich nicht, welche Java-Installation ausgeführt java -versionwird. Dies kann die JRE- oder JDK-Installation sein. javac -versionwäre etwas nützlicher. Selbst dann, wenn PATH korrekt und JAVA_HOME falsch ist, werden diese immer noch so angezeigt, wie Sie es erwarten würden.
Powerlord
1
Außerdem sollte die ausführbare Datei ... \ bin \ javac sein. Sie müssen die tatsächliche ausführbare Datei angeben, nicht nur den Pfad.
Robin

Antworten:

141

Sie können versuchen, das von JDK Eclipse verwendete Update wie folgt zu aktualisieren:

Hinzufügen und stellen Sie die JRE im Menü FensterEinstellungen ...JavaInstallierte JREs :

JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:\Program Files (x86)\Java\jdk1.6.0_18

Ist dies nicht der Fall, können die Klammern und Leerzeichen im Pfad JAVA_HOME Probleme verursachen. Versuchen Sie, Ihr JDK an einen anderen Speicherort zu kopieren und Ihr JAVA_HOME zu aktualisieren.

lucrussell
quelle
1
Es ist in der Tat der erste Teil Ihrer Frage, JAVA_HOME Sache ist in
Ordnung
47
Für mich war ein zusätzlicher Schritt erforderlich: Gehen Sie zu den Eigenschaften des Projekts -> Java-Erstellungspfad -> Bibliotheken -> wählen Sie "JRE-
Systembibliothek
1
war mir nicht genug, musste eclipse.ini bearbeiten. Ich glaube, es gibt einen Fehler.
ruhsuzbaykus
Es hat bei mir nur funktioniert, wenn ich das entsprechende JDK in der Ausführungsumgebung -> Kompatible JREs überprüft habe.
Vedran
9
Wenn Sie Maven aus einer Eclipse-Ausführungskonfiguration ausführen, die Sie vor diesen Konfigurationsänderungen erstellt haben, denken Sie außerdem daran, das Konfigurationsfenster / die Registerkarte JRE auszuführen und die richtige JRE auszuwählen. Andernfalls könnten Sie die alte falsche JRE verwenden, auch nachdem Sie Ihre Eclipse- und Projekteinstellungen auf die neue aktualisiert haben.
Diana
20

Die Datei eclipse.ini benötigt dievm Argument, um auf Ihren JDK-Speicherort zu verweisen.

Bearbeiten Sie die eclipse.iniDatei so, dass sie auf Ihre JDK-Startseite verweist.

-vm
C:\Program Files\Java\jdk1.6.0_06

Dadurch wird sichergestellt, dass Eclipse vom JDK ausgeführt wird und keine Standard-JRE auf Ihrem Computer.

Sai Hegde
quelle
5
Dies hat mein Problem behoben. Nach Recherchen im Web sieht es so aus, als ob der Maven JAVA_HOME verwendet, aber das Maven-Plugin weiß nichts über JAVA_HOME und verwendet stattdessen standardmäßig die VM, die zum Starten von Eclipse verwendet wird.
Jnosek
13

Sie versuchen:

Gehen Sie zu Preferences/Java/Installed JREsund fügen Sie eine für den Standort "C:\Program Files\Java\jdk1.6.0_27\jreoder ähnliches hinzu.

Entfernen Sie die für C:\Program Files\Java\jre6

Wie Sie sehen, ist der Pfad C:\Program Files\Java\jre6\..\lib\tools.jarnur dann sinnvoll, wenn der erste Teil (bis zum / ..) durch ersetzt wird C:\Program Files\Java\jdk1.6.0_27\jre.

cuocdoibian1971
quelle
10

Das Setzen der Gabel auf true hat das Problem für mich behoben.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
Prash
quelle
9

Ich hatte genau das gleiche Problem! Ich hatte tagelang gesucht und gesucht, weil all das Gerede über "Setzen Sie die -vm c: \ Programme \ java \ jdkxxxxx \ bin" in das Ini ar als Argument für eine Verknüpfung überhaupt nicht half !

(Klinge ich frustriert? Glauben Sie mir, das ist eine Untertreibung! Ich bin einfach wütend, weil ich eine Woche verloren habe, um Maven zuverlässig zu machen!)

Ich hatte ein sehr unvorhersehbares Verhalten. Manchmal wurde es kompiliert und manchmal nicht. Wenn ich amaven clean , konnte es den Compiler nicht finden und schlug fehl. Wenn ich dann etwas im Build-Pfad geändert habe, hat es plötzlich wieder funktioniert !!

Bis ich zum Menü FensterEinstellungenJavaInstallierte JREs ging . Ich habe eine neue JRE unter Verwendung des Speicherorts des JDK hinzugefügt und dann die JRE entfernt. Plötzlich lief Maven stabil!

Vielleicht lohnt es sich, Buchstaben mit einer Schriftgröße von 30 oder so in das Apache-Handbuch einzutragen?

Bei allem Respekt ist dies für die Java-Community einfach unverschämt! Ich kann mir nicht vorstellen, wie viele Tage all diese Leute verloren haben, um ihre Probleme dieser Art zu lösen! Ich kann mir unmöglich vorstellen, dass dies als endgültige Version veröffentlicht wird. Ich persönlich würde es nicht einmal wagen, so etwas unter dem Namen Beta zu veröffentlichen Software zu veröffentlichen ...

Mit freundlichen Grüßen so oder so ... Nach einer Woche der Manipulation kann ich endlich anfangen, mich zu entwickeln. Ich hoffe, mein Chef wird davon nichts erfahren. Ich habe mich sehr bemüht, ihn davon zu überzeugen, nicht zu .NET zu gehen, und es tut mir bereits leid.

Lorenzo
quelle
1
Fazit: Verwenden Sie es von der Konsole aus, nicht von Eclipse. Sie werden diese Art von Problemen nicht haben. Das habe ich nach einigen Monaten der Verwendung festgestellt. Jetzt ist es ziemlich bequem mit Maven
Gandalf StormCrow
Es ist eher eine Sonnenfinsternis ... m2e Problem ... Ich habe das gleiche Problem und die anderen IDEs (Netbeans und IDEA) funktionieren perfekt.
Joshua
3

Ich habe das gleiche Problem mit Run as -> Maven install in Eclipse. JAVA_HOME und eclipse.ini waren in Ordnung und zeigten auf mein aktuelles JDK. Aber m2clipse hat JRE verwendet. Die Verwendung von mvn install außerhalb von Eclipse hat gut funktioniert!

In meinem Fall habe ich das Problem wie folgt gelöst:

  1. Navigieren Sie in Eclipse: Menü FensterEinstellungenJavaInstallierte JREs
  2. Es gab zwei inaktive Einträge für eine JRE und ein JDK. Das aktive war das zuletzt installierte JDK. Löschen Sie alle Einträge außer dem, den Maven verwenden sollte.

Ich denke, Maven berücksichtigt nicht, welcher aktiv ist ...

Markus
quelle
3

Ich habe gerade Maven installiert 3.0.4, eingestellt M2_HOME, M2und JAVA_HOMEentsprechend. Ich habe dann die folgenden Befehle ausgeführt:

mvn archetype:generate....

mvn compile

Ich habe eine fehlgeschlagene Nachricht erhalten wie : maven unable to locate javac compiler.

Auf meinem Computer ist JRE standardmäßig unter C: \ Programme \ Java \ Jre.1.6 installiert . Und ich habe das andere C: \ java \ jdk1.6 und JAVA_HOMEsetze dieses C: \ java \ jdk1.6 .

Ich habe nichts Falsches an meiner Einstellung gesehen. Nach der Suche habe ich mich entschlossen, nachzuschauen . mvn.batIch habe %JAVA_HOME%jeden Schritt wiederholt und es wurde korrekt angezeigt C:\java\jdk1.6, aber als ich den Befehl ausführtemvn --version , wurde Java home angezeigt: C: \ program files \ java \ jre1.1.6 .

Schließlich fand ich heraus, dass ich nur -Djava.home=c:\java\jdk1.6wie im folgenden Befehl festlegen muss und jetzt gut funktioniert:

%MAVEN_JAVA_EXE% %MAVEN_OPTS% -classpath %CLASSWORLDS_JAR% "-Dclassworlds.conf=%M2_HOME%\bin\m2.conf" "-Djava.home=%JAVA_HOME%" "-Dmaven.home=%M2_HOME%" %CLASSWORLDS_LAUNCHER% %MAVEN_CMD_LINE_ARGS%

Hinweis: Dies gilt für mvndie Befehlszeile und nicht für Eclipse.

smngo
quelle
Hey, du musst nicht immer jeden Schritt erklären, den du getan hast. Bitte lesen Sie, wie Sie auf den Punkt antworten können .
MTK
Das scheint ein Hack zu sein (aber hey ... wenn es für Sie funktioniert!), Aber es ist interessant, dass die Maven-Befehlszeile das falsche Java-Zuhause aufnimmt - dies ist unser aktuelles Problem.
Plasma147
2

Ich habe das Problem gelöst, indem ich den Speicherort der installierten JRE in das im JDK selbst vorhandene Verzeichnis geändert habe. Einstellen des richtigen Werts vonJAVA_HOME Umgebungsvariable hat das Problem nicht behoben.

In meinem Fall gibt es zwei Verzeichnisse

  • C:\Program Files\Java\jdk1.7.0_03 --> For JDK

  • C:\Program Files\Java\jre7 --> For JRE

Anfangs habe ich C:\Program Files\Java\jre7in Eclipse als Installierte JRE festgelegt und im Fall von Maven wurde der gleiche Fehler angezeigt (Ant funktionierte einwandfrei).

Durch Ändern der installierten JRE in C:\Program Files\Java\jdk1.7.0_03\jre7Installierte JRE in Eclipse wird das Problem behoben.

Nikhil
quelle
2

Vergessen Sie nicht, dass Sie, wenn Sie Ihr Projekt von einer bestimmten Eclipse-Konfiguration aus ausführen, die Java-Laufzeit unter "Konfigurationen ausführen" -> "Ihre Maven-Konfiguration" -> "Registerkarte JRE" ändern sollten, nachdem Sie das richtige JDK hinzugefügt haben Ihre Eclipse-Einstellungen.

Ivan Fernandez
quelle
2

Es hört sich so an, als würde Maven die JRE verwenden, nicht das JDK. Vielleicht haben Sie Maven vor der Installation des JDK installiert?

Überprüfen Sie die Einstellungsdateien . Insgesamt gibt es drei: System, Benutzer und Projekt. Dies ist höchstwahrscheinlich in der Installationskonfiguration ($ M2_HOME / conf / settings.xml) oder möglicherweise in der Konfiguration pro Benutzer ($ {user.dir} /. M2 / settings.xml) der Fall.

Devon_C_Miller
quelle
2

Nur Eclipse-Setup

Führen Sie die folgenden Schritte aus:

  1. Klicken Sie mit der rechten Maustaste auf Eclipse-Projekteigenschaften

  2. Java Build Path → Bibliotheken

  3. Wählen Sie JRE System Library → Klicken Sie auf die EditSchaltfläche

  4. Klicken Sie auf die Schaltfläche "Installierte JREs ..."

  5. Bearbeiten Sie JRE als: Setzen Sie JRE Home = JAVA_HOME oder JAVA_HOME \ jre

Bildschirmfoto:

Geben Sie hier die Bildbeschreibung ein

Parthasarathy B.
quelle
Das hat bei mir funktioniert, danke. Ich habe die JRE-Startseite in den JDK-Ordner geändert.
LadyBernkastel
1

Klicken Sie mit der rechten Maustaste auf das Menü ProjektEigenschaftenJava-Erstellungspfad .

Wählen Sie den JRE-Systempfad → Bearbeiten . Wählen Sie die Standard-JRE für den Arbeitsbereich aus und zeigen Sie auf JDK> 1.4.

wie seins
quelle
1

Benutzen Sie das Menü FensterEinstellungenJavaInstallierte JREsExecution Environments -> klicken Sie auf das Kontrollkästchen auf der rechten Seite.

Gambotic
quelle
1

Die Lösung ist einfach. Manchmal zeigen die Eclipse- FensterEinstellungenJavaInstallierte JREs aufC:\Program files\Java\jre .

Wenn ich es geändert habe, C:\Program files\Java\JDK 6.0\jrefunktioniert es zu 100%.

Santhosh
quelle
1

Wie bereits von mehreren anderen erwähnt, sollte das Eclipse- FensterEinstellungen ...JavaInstallierte JREs auf das von Ihnen installierte JDK und nicht auf die JRE verweisen . Nur dann kann es den ../libin der Fehlermeldung genannten Ordner finden .

Trotzdem kann das Problem erneut auftreten. Mein Ausweg in Eclipse v4.2 (Juno) ist ein Menü MavenProjekt aktualisieren ... danach verschwindet das Problem.

Ich vermute, der Grund dafür ist, dass einige der von Eclipse generierten Dateien (.classpath, .project, .preferences) für das Projekt, in dem ich diese Probleme habe, in Subversion sind. Ein SVN-Update führt das Problem ein, und ein Konfigurationsupdate von Maven in Eclipse behebt es erneut.

Echte Lösung: Lassen Sie die von Eclipse generierten .files in der Versionskontrolle weg und lassen Sie das Maven Eclipse-Plugin die Projektkonfiguration übernehmen. (Zusätzliche Hinweise / Vorschläge sind willkommen) .

avandeursen
quelle
1

In meinem Fall im Eclipse-Menü AusführenDebug-Konfigurationen .

Auf der Registerkarte JRE wurde das Problem durch Auswahl des JDK anstelle des JRE behoben.

Vathsala Weerasinghe
quelle
1

Ich hatte das gleiche Problem unter Amazon Linux. Es stellte sich heraus, dass ich die Entwicklerversion des JDK installieren musste:

sudo yum -y install java-1.7.0-openjdk-devel
Evan Siroky
quelle
1

Gehen Sie zum Eclipse-Menü FensterEinstellungen ...JavaInstallierte JREs sollten auf das von Ihnen installierte JDK verweisen, nicht auf die JRE.

Sudipto
quelle
Dies steht aber auch in zahlreichen früheren Antworten.
Peter Mortensen
0

Sie können auch sicherstellen, dass Eclipse alle aktualisierten Änderungen enthält. Klicken Sie dazu mit der rechten Maustaste auf Ihr Projekt und klicken Sie auf den Menüpunkt "Aktualisieren".

GregNash
quelle
0

Viele andere Antworten sagen Ihnen, dass Sie Ihre Eclipse auf ein JDK anstelle einer JRE verweisen sollen.

Hier ist eine weitere Antwort mit spezifischeren / klareren [als ich in jeder Antwort hier gesehen habe] Schritt für Schritt, wie das geht: Wie installierst du JDK?

Das hat mich für das gleiche Problem gelöst.

cellepo
quelle
0

Stellen Sie sicher, dass sich das "-vm" in Ihrer eclipse.ini in zwei getrennten Zeilen befindet, dh:

-vm
C:\Program Files\Java\jdk1.6.0_06
Kevin Van Dyck
quelle
0

Ich würde vermuten, dass der Speicherort des Compilers in einem POM definiert ist, damit sich das Compiler-Plugin an dem angezeigten JRE-Speicherort befindet, anstatt an dem JDK-Speicherort, auf den JAVA_HOME zeigt.

Robin
quelle
@Robin Wo genau soll ich danach suchen? Der Pom sieht gut aus für mich<groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <version>2.0.2</version> <configuration> <source>1.6</source> <target>1.6</target>
Gandalf StormCrow
Wenn kein <ausführbares> definiert ist, ist dies nicht die Ursache für Ihr Problem, es sei denn, der Pom, den Sie betrachten, erbt von einem übergeordneten Pom, in dem es definiert ist.
Robin
Wenn Sie die ausführbare Datei definieren, müssen Sie auch <fork> auf true setzen.
Robin
0

Sie müssen angeben , JAVA_HOMEin mvn.ini(es ist in der Maven - Ordner /bin) und Ihr Problem verschwindet.

Javicha
quelle
0

Wenn Sie JAVA_HOME festlegen und das Problem weiterhin besteht, versuchen Sie Folgendes.

(Ich hatte das gleiche Problem auf einem neu installierten PC.)

Angenommen, Sie verwenden Eclipse.

  • Fenster öffnen → EinstellungenJavaInstallierte JREs . Entfernen Sie alles, was Sie dort haben, und fügen Sie das gewünschte hinzu (JDK, kein JRE!)
  • Fügen Sie im selben Fenster Maven-Installationen die Maven-Installation hinzu, die Sie heruntergeladen und irgendwo extrahiert haben. ( Verwenden Sie nicht die eingebettete Maven-Installation. Es sind einige Fehler bekannt.)

Das ist alles. Ihr Projekt wird nicht unter solchen Problemen leiden.

Marcell
quelle
0

Ich hatte den gleichen Fehler wegen der JUnit- Version. Ich hatte drei 3.8.1 und bin zu 4.8.1 gewechselt.

Die Lösung lautet also:

Sie müssen zum 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
0

Ich habe die Konfiguration von maven-Compiler-Plugin hinzufügen executableund forkmit dem Wert wahr.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
    <executable>C:\Program Files\Java\jdk1.6.0_18\bin\javac</executable>
</configuration>

Es hat bei mir funktioniert.

Soumyajit Swain
quelle
0

Tun Echo %JAVA_HOME%und dann mvn --version.

Der JRE- Pfad sollte identisch sein ... dann gehen Sie zum Menü FensterEinstellungenJavaDer Speicherort der installierten JRE sollte mit dem angezeigten übereinstimmenJava_Home .

Vandana
quelle
0

Gehen Sie zum Dialogfeld Eigenschaften und klicken Sie mit der rechten Maustaste auf das Projekt.

In verknüpften Ressourcen , fügen Sie einen neuen Pfad JAVA_HOME und setzte in Ihrer JDK Lage, so etwas wie „C: \ Programme \ Java \ jdk1.8.0_73“ genannt.

Das ist alles!!

Macu Gómez
quelle
Ich denke nicht, dass Sie eine Variable hinzufügen sollten. Ändern Sie einfach die JDK-Konfiguration unter Einstellungen ausführen in Arbeitsbereich JDK
Phani
0

Die Lösung für dieses Problem ist sehr einfach ...

Wenn Sie keine Ant- Build-Datei haben , generieren Sie diese. In Eclipse können Sie einfach eine Ant- Datei erstellen .

Klicken Sie auf den Link zum Erstellen der Ant- Build-Datei [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse]. .

Befolgen Sie nun die angegebenen Schritte:

1) Fügen Sie Ihre Ant- Build-Datei in der Ant-Ansicht hinzu, die sich im Ansichtsfenster befindet.

2) Klicken Sie mit der rechten Maustaste auf Ihre Ant- Build-Datei und wählen Sie Ausführen als und die zweite Option in diesem "Ant-Build".

3) Nun öffnet sich ein Dialogfeld mit verschiedenen Optionen und Registerkarten.

4) Wählen Sie die Registerkarte JRE .

5) Sie sehen drei Optionsfelder, bei denen JRE oder JDK als Option ausgewählt sind.

6) Überprüfen Sie sorgfältig, ob für die Optionsfeldoptionen JRE ausgewählt ist, und ändern Sie sie in JDK .

7) Klicken Sie auf Übernehmen.

Das ist es...!!!

Nishat Lakhani
quelle