Build Maven non riuscita: "Impossibile individuare il compilatore Javac in: problema jre o jdk"


112

Ho il mio JAVA_HOME impostato su:

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

Dopo aver eseguito maven install, ricevo questo messaggio da Eclipse :

Motivo:

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.

Sono certo che questa sia la parte difficile

Assicurati di utilizzare JDK 1.4 o superiore e non un JRE

Quando eseguo la configurazione è impostato su JRE6. Come posso cambiarlo in JDK 1.6 che ho già installato?

Ho anche provato a modificare il plugin:

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

Continuo a ricevere lo stesso errore.

Uso il plugin Eclipse Maven. Come posso passare da JRE a JDK in Eclipse?


Hai ricontrollato utilizzando il comando della riga di setcomando per assicurarti che JAVA_HOME sia impostato su quello che pensi che sia?
Powerlord

Sto usando java quotidianamente .. tutto funziona bene qui è: 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
Imposta <fork> true </fork> quando imposti l'eseguibile.
Robin

Questo in realtà non ci dice quale installazione di Java java -versionè in esecuzione; potrebbe essere l'installazione JRE o JDK. javac -versionsarebbe un po 'più utile. Tuttavia, anche se PATH è corretto e JAVA_HOME è sbagliato, questi verrebbero comunque visualizzati come ti aspetteresti.
Powerlord

1
Inoltre, l'eseguibile dovrebbe essere ... \ bin \ javac, devi specificare l'eseguibile effettivo, non solo il percorso.
Robin

Risposte:


141

Potresti provare ad aggiornare JDK che Eclipse sta usando, come segue:

Aggiungi e imposta il JRE nel menu FinestraPreferenze ...JavaJRE installati :

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

Se questo non è il caso, è possibile che le parentesi e gli spazi nel percorso JAVA_HOME stiano causando problemi. Prova a copiare il tuo JDK in una posizione diversa e ad aggiornare il tuo JAVA_HOME.


1
È davvero la prima parte della tua domanda, la cosa JAVA_HOME è ok
Gandalf StormCrow

47
Per me era necessario un passaggio in più: andare alle proprietà di detto progetto-> percorso di compilazione java-> librerie-> selezionare "JRE System Library", fare clic su Modifica e selezionare "Workspace default JRE"
maayank

1
non era abbastanza per me, ho dovuto modificare eclipse.ini. Credo che ci sia un bug.
ruhsuzbaykus

Ha funzionato per me solo quando ho controllato il jdk appropriato nell'ambiente di esecuzione -> JRE compatibili.
Vedran

9
Inoltre, se esegui Maven da una configurazione di esecuzione eclipse creata prima di queste modifiche alla configurazione, ricorda di andare alla finestra di configurazione Esegui / scheda JRE e di selezionare il JRE corretto. Altrimenti potresti usare il vecchio JRE sbagliato anche dopo aver aggiornato le impostazioni di eclipse e progetto a quello nuovo.
Diana

20

Il file eclipse.ini richiede l' vmargomento per puntare alla tua posizione JDK.

Modifica il eclipse.inifile in modo che punti alla tua casa JDK, come segue:

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

Ciò garantisce che Eclipse esegua il JDK e non qualsiasi JRE predefinito sulla macchina.


5
Questo ha risolto il mio problema. Dalla ricerca sul Web, sembra che Maven utilizzi JAVA_HOME, ma il plug-in Maven non sa nulla di JAVA_HOME e invece utilizza per impostazione predefinita la VM utilizzata per avviare Eclipse.
jnosek

13

Si prova:

Vai a Preferences/Java/Installed JREse aggiungine uno per la posizione "C:\Program Files\Java\jdk1.6.0_27\jreo qualcosa del genere.

Rimuovi quello per C:\Program Files\Java\jre6

Come puoi vedere, il percorso C:\Program Files\Java\jre6\..\lib\tools.jarha senso solo se la prima parte (fino a / ..) è sostituita da C:\Program Files\Java\jdk1.6.0_27\jre.


10

L'impostazione di fork su true ha risolto il problema per me.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>

9

Ho avuto esattamente lo stesso problema! Stavo cercando e cercando da giorni perché tutte le chiacchiere su "metti i file -vm c: \ programmi \ java \ jdkxxxxx \ bin" nell'ini ar come argomento per una scorciatoia non hanno aiutato affatto !

(Sembro frustrato? Credimi, è un eufemismo! Sono semplicemente furioso perché ho perso una settimana cercando di rendere Maven affidabile!)

Ho avuto un comportamento molto imprevedibile. A volte è stato compilato e talvolta no. Se ho fatto a maven clean, non è stato possibile trovare il compilatore e non è riuscito. Se poi ho cambiato qualcosa nel percorso di costruzione, improvvisamente ha funzionato di nuovo !!

Fino a quando non sono andato al menu FinestraPreferenzeJavaJRE installati . Ho aggiunto un nuovo JRE utilizzando la posizione del JDK e quindi rimosso il JRE. All'improvviso Maven è diventato stabile!

Forse vale la pena inserire lettere con dimensione del carattere 30 o giù di lì nel manuale di Apache?

Con tutto il rispetto, questo è semplicemente oltraggioso per la comunità Java! Non riesco a immaginare quanti giorni sono stati persi da tutte queste persone, cercando di risolvere i loro problemi di questo tipo! Non riesco a immaginare che questo venga rilasciato come versione finale. Personalmente non oserei nemmeno rilasciare una cosa del genere con il nome di software beta ...

Cordiali saluti in ogni caso .... Dopo una settimana di manomissioni posso finalmente iniziare a sviluppare. Spero che il mio capo non lo scopra. Mi ci sono voluti molti sforzi per convincerlo a non andare su .NET e già mi dispiace per questo.



È più un'eclissi ... problema m2e .. Ho lo stesso problema e gli altri IDE (netbeans e IDEA) funzionano perfettamente.
joshua

3

Ho avuto lo stesso problema usando Esegui come -> Installa Maven in Eclipse. JAVA_HOME ed eclipse.ini erano OK e indicavano il mio ultimo JDK. Ma m2clipse ha utilizzato JRE. L'utilizzo di mvn install al di fuori di Eclipse ha funzionato bene!

Nel mio caso, ho risolto il problema come segue:

  1. Navigare in Eclipse: menu FinestraPreferenzeJavaJRE installati
  2. C'erano due voci inattive per un JRE e un JDK. Quello attivo era l'ultimo JDK installato. Elimina tutte le voci tranne quella che Maven dovrebbe usare.

Penso che Maven non tenga conto di quale sia attivo ...



3

Ho appena installato Maven 3.0.4, impostare M2_HOME, M2e JAVA_HOMEdi conseguenza. Ho quindi eseguito i seguenti comandi:

mvn archetype:generate....

mvn compile

Mi sono fallito messaggio del tipo: maven unable to locate javac compiler.

Sul mio computer, per impostazione predefinita, JRE è installato in C: \ programmi \ java \ jre . 1.6 . E ho l'altro C: \ java \ jdk1.6 e JAVA_HOMEimpostato su questo C: \ java \ jdk1.6 .

Non ho visto niente di sbagliato nella mia impostazione. Dopo la ricerca, ho deciso di esaminare mvn.bat, ho ripetuto %JAVA_HOME%ogni passaggio e veniva visualizzato correttamente come C:\java\jdk1.6, ma quando ho eseguito il comando mvn --version, ha visualizzato la home di Java: C: \ programmi \ java \ jre1.1.6 .

Alla fine, ho scoperto che ho solo bisogno di impostare -Djava.home=c:\java\jdk1.6come nel comando seguente e ora funziona bene:

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

Nota: questo è per mvnla riga di comando e non con Eclipse.


Ehi, non devi andare a spiegare sempre ogni passaggio che hai fatto. Si prega di vedere come rispondere al punto .
mtk

Sembra un trucco (ma hey ... se funziona per te!) Ma è interessante che la riga di comando di Maven rilevi la home java sbagliata: questo è il nostro problema attuale.
plasma147

2

Ho risolto il problema cambiando la posizione di JRE installato nella directory presente in JDK stesso. L'impostazione del valore corretto della JAVA_HOMEvariabile di ambiente non ha risolto il problema.

Nel mio caso, ci sono due directory

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

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

Inizialmente ho impostato C:\Program Files\Java\jre7come JRE installato in Eclipse e stavo ricevendo lo stesso errore in caso di Maven (Ant funzionava bene).

Modificando il JRE installato in JRE C:\Program Files\Java\jdk1.7.0_03\jre7installato in Eclipse, il problema viene risolto.


2

Non dimenticare che se stai eseguendo il tuo progetto da una particolare configurazione di Eclipse, dovresti cambiare il Java Runtime in "Esegui configurazioni" -> "La tua configurazione maven" -> "Scheda JRE" dopo aver aggiunto il JDK corretto a le tue preferenze di Eclipse.


2

Sembra che Maven stia usando JRE, non JDK. Forse hai installato Maven prima di installare JDK?

Controlla i file delle impostazioni . Ce ne sono tre in totale, sistema, utente e progetto. È molto probabilmente nella configurazione dell'installazione ($ M2_HOME / conf / settings.xml) o, possibilmente, nella configurazione per utente ($ {user.dir} /. M2 / settings.xml).


2

Solo configurazione Eclipse

Procedi nel seguente modo:

  1. Fare clic con il tasto destro su Proprietà del progetto Eclipse

  2. Percorso build Java → Librerie

  3. Selezionare JRE System Library → Fare clic sul Editpulsante

  4. Fare clic sul pulsante "JRE installati ..."

  5. Modifica JRE come: Imposta JRE Home = JAVA_HOME o JAVA_HOME \ jre

Immagine dello schermo:

Inserisci qui la descrizione dell'immagine


Questo ha funzionato per me, grazie. Ho cambiato la home page di JRE nella cartella JDK.
LadyBernkastel

1

Fare clic con il tasto destro sul menu ProgettoProprietàPercorso build Java .

Seleziona il percorso del sistema JRE → Modifica . Selezionare il JRE predefinito dell'area di lavoro e puntarlo su JDK> 1.4.


1

Usa il menu FinestraPreferenzeJavaJRE installatiAmbienti di esecuzione -> fai clic sulla casella di controllo sul lato destro.


1

La soluzione è semplice. A volte Eclipse WindowsPreferenzeJavaJRE installati punta a C:\Program files\Java\jre.

Quando l'ho cambiato, C:\Program files\Java\JDK 6.0\jreha funzionato al 100%.


1

Come menzionato da molti altri, la finestra Eclipse → Preferenze ...JavaJRE installati dovrebbe puntare al JDK che hai installato, non a JRE. Solo allora può trovare la ../libcartella menzionata nel messaggio di errore.

Anche con questo, il problema potrebbe ripresentarsi. La mia via d'uscita in Eclipse v4.2 (Juno) è fare un menu MavenAggiorna progetto ... dopodiché il problema scompare.

Sospetto che il motivo sia che alcuni dei file generati da Eclipse (.classpath, .project, .preferences) sono in Subversion per il progetto in cui sto riscontrando questi problemi. Pertanto, un aggiornamento SVN introduce il problema e un aggiornamento della configurazione da Maven in Eclipse lo risolve di nuovo.

Soluzione reale: ometti i file .file generati da Eclipse dal controllo della versione e lascia che il plugin Maven Eclipse gestisca la configurazione del progetto. (Ulteriori suggerimenti / suggerimenti sono benvenuti) .


1

Nel mio caso, nel menu Eclipse EseguiDebug Configurazioni .

Nella scheda JRE, selezionando il JDK invece del JRE si è risolto il problema.


1

Ho avuto lo stesso problema su Amazon Linux. Si scopre che ho dovuto installare la versione per sviluppatori del JDK:

sudo yum -y install java-1.7.0-openjdk-devel

1

Vai al menu di Eclipse FinestraPreferenze ...Java → I JRE installati dovrebbero puntare al JDK che hai installato, non al JRE.


Ma questo è anche in numerose risposte precedenti.
Peter Mortensen

0

Puoi anche assicurarti che Eclipse abbia tutte le modifiche aggiornate. A tale scopo, fare clic con il pulsante destro del mouse sul progetto e quindi premere la voce di menu "Aggiorna".


0

Molte altre risposte ti dicono di puntare il tuo Eclipse su un JDK invece che su un JRE.

Ecco un'altra risposta con più specifiche / chiare [di quanto ho visto in qualsiasi risposta qui] passo dopo passo su come farlo: Come installi JDK?

Questo è ciò che mi ha risolto per lo stesso problema.


0

Assicurati che "-vm" nel tuo eclipse.ini sia su due righe separate, ovvero:

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

0

Immagino che la posizione del compilatore sia definita in un POM in modo che il plug-in del compilatore si trovi nella posizione JRE visualizzata, invece della posizione JDK a cui punta JAVA_HOME.


@Robin Dove dovrei cercarlo esattamente? il pom mi sembra a posto<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

Se non c'è un <eseguibile> definito, allora non è questo che sta causando il tuo problema, a meno che il pom che stai guardando non erediti da un genitore pom che lo ha definito.
Robin

Quando definisci l'eseguibile, devi anche impostare <fork> su true.
Robin

0

Devi indicare JAVA_HOMEin mvn.ini(è nella cartella Maven /bin) e il tuo problema scomparirà.


0

Se imposti JAVA_HOME e il problema persiste, prova quanto segue.

(Ho avuto lo stesso problema, su un nuovo PC installato.)

Supponendo che tu stia utilizzando Eclipse.

  • Apri FinestraPreferenzeJavaFile installati . Rimuovi tutto ciò che hai lì, aggiungi quello che desideri utilizzare (JDK, no JRE!)
  • Nella stessa finestra apri maven - installazioni, aggiungi l'installazione di Maven che hai scaricato ed estratto da qualche parte. ( Non utilizzare l'installazione Maven incorporata. Presenta alcuni bug noti.)

È tutto. Il tuo progetto non soffrirà di tali problemi.


0

Ho avuto lo stesso errore, a causa della versione JUnit . Avevo tre 3.8.1 e sono passato a 4.8.1.

Quindi la soluzione è:

Devi andare al POM e assicurarti che la tua dipendenza sia simile a questa

<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>

0

Ho cambiato la configurazione di maven-compiler-plugin in add executablee forkcon valore true.

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

Ha funzionato per me.


0

Fare Echo %JAVA_HOME%e poimvn --version .

Il percorso JRE dovrebbe essere lo stesso ... quindi vai al menu FinestraPreferenzeJavaLa posizione di JRE installato dovrebbe essere la stessa Java_Homemostrata.


0

Vai alla finestra di dialogo Proprietà e fai clic con il pulsante destro del mouse sul progetto.

In Risorse collegate , aggiungi un nuovo percorso chiamato JAVA_HOME e inserisci la tua posizione JDK, qualcosa come "C: \ Programmi \ Java \ jdk1.8.0_73".

È tutto!!


Non penso che dovresti aggiungere alcuna variabile .. cambia semplicemente la configurazione JDK in Esegui impostazioni nello spazio di lavoro JDK
Phani

0

La soluzione a questo problema è molto semplice ...

Se non hai il file di build Ant, generalo. In Eclipse puoi creare facilmente un file Ant .

Fare riferimento al collegamento per creare il file di build Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Ora segui i passaggi indicati:

1) Aggiungi il tuo file di build Ant nella vista Ant che è nella finestra di visualizzazione.

2) fai clic con il pulsante destro del mouse sul file di build Ant e seleziona Esegui come e la seconda opzione in "Ant Build".

3) Ora si aprirà una finestra di dialogo con varie opzioni e schede.

4) Selezionare la scheda JRE .

5) Vedrai tre pulsanti di opzione e avranno JRE o JDK selezionato come opzione.

6) Guarda attentamente se le opzioni del pulsante di opzione hanno JRE come selezionato, quindi cambialo in JDK .

7) Fare clic su Applica.

Questo è tutto...!!!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.