Nessun compilatore è fornito in questo ambiente. Forse stai eseguendo un JRE anziché un JDK?


633

Sto compilando un progetto in Eclipse usando m2eclipse. Ho impostato il percorso JDK in Eclipse in questo modo:

Windows-->preferences-->installed jres--> jdk1.7.xx  path

Ma questo sta mostrando un errore

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

1
come stai iniziando la compilazione? Riga di comando? Strumento Eclipse?
Joeri Hendrickx,

dallo strumento eclipse Esegui configurazione -> Obiettivi: installazione pulita
Sai prateek,


7
Ehi, questo errore sta arrivando perché Maven sta cercando di ottenere JDK ma in eclissi punta a JRE. Puoi cambiare il percorso in JDK e funzionerà. Controlla qui sotto il post che ti aiuterà a imparare-automation.com/…
Mukesh otwani,

sto postando questo link in modo che qualcuno in futuro possa trarre beneficio da me. stackoverflow.com/a/33873838/4525120
divino

Risposte:


983
  1. Sul tuo IDE Eclipse, vai in Finestra > Preferenze > Java > JRE installati > e controlla i tuoi JRE installati . Dovresti avere una voce con un JDK lì.
  2. Seleziona Envution Env come mostrato di seguito. Clicca OK
  3. Quindi fai clic con il pulsante destro del mouse sul tuo progetto -> Maven -> Aggiorna progetto

Inoltre, potresti dover modificare Maven JRE (vedi la risposta @ jlars62) che è la seguente. Vai a Esegui -> Esegui configurazioni, selezionando Maven Build che stavo eseguendo (dal pannello di sinistra). Quindi, ho fatto clic sulla scheda JRE e ho selezionato l'opzione JRE predefinita dell'area di lavoro

inserisci qui la descrizione dell'immagine


15
@jaipster Ho provato a farlo, ma non sono riuscito a trovare il jdk nel pannello di sinistra, riesco a vedere solo il jre7. Sai perché?
Diyoda_

4
Potrebbe essere che tu abbia jdk7 non installato sul tuo computer o che non sia configurato in eclipse. Puoi confermare.
Jaipster,

52
@Diode Ho avuto lo stesso problema. Sono andato su "JRE installati" e ho fatto clic su "Aggiungi ..." Da lì sono passato a C: \ Programmi \ Java \ jdk1.7.0_XX e quindi ho potuto selezionare jre come descritto da hipster.
jlunavtgrad,

7
Per me è stato sufficiente aggiungere JDK all'elenco di "JRE installati" (non il nome migliore ...) e selezionare la casella di controllo accanto alla nuova voce JDK rendendola la VM predefinita.
Tom Fink

7
Ho fatto clic sul pulsante "Cerca" nel menu "JRE installati". Eclipse ha cercato in uno dei drive a cui l'ho indicato ed è uscito con tutti i JRE e JDK installati.
The Mitra Boy,

141

Per me, è esattamente ciò di cui si lamenta la mavenia dell'eclissi

inserisci qui la descrizione dell'immagine

Quindi, premo il Editpulsante e cambio percorso alla cartella JDK, quindi pulisco il progetto e tutto inizia a funzionare


3
Preferirei aggiungere JRE usando il pulsante "Aggiungi", quindi manipolando una voce JRE per diventare una voce JDK! E dopo aver aggiunto JDK, fai clic sulla casella di controllo accanto alla voce JDK. Questo dovrebbe già risolvere i problemi descritti in questo post.
Tom Fink

3
È strano . perché come mostra il titolo della finestra di dialogo, questo dovrebbe posizionare la Installed JREscartella jdk anziché. Ma mi ha davvero risolto il problema. Grazie
Joe.wang il

È strano che il titolo sia JRE installato ma il percorso è JDK ma comunque funziona grazie
Abhijit Chakra

È una buona idea rimuovere JRE dopo aver aggiunto JDK. A volte Eclipse continua a utilizzare JRE indipendentemente, non ho idea del perché. Rendere JDK l'unica opzione disponibile aiuta. :)
leftbit

128
  1. Impostare la JAVA_HOMEvariabile di ambiente sulla cartella principale JDK - richiesta se si esegue la riga di comando o maven ( mvn).
    • (Cerca su google JAVA_HOMEper maggiori informazioni)
  2. Nelle proprietà del progetto nella sezione Compilatore Java selezionare JDK richiesto - se si esegue direttamente da eclipse

Perché è richiesto il passaggio 1?
Duncan Jones,

2
@DuncanJones, prima è necessario se si esegue la riga di comando o maven (google per questa variabile), in secondo luogo - se si esegue direttamente da eclipse,
msangel

1
Aggiungerei tali informazioni alla tua risposta. Altrimenti suggerisce che entrambi sono necessari in tutti i casi.
Duncan Jones,

10
Prestare attenzione che JAVA_HOME non termina con "bin", ma punta alla radice di JDK.
Koppor,

Necessario per il plugin di rilascio in quanto non utilizza le impostazioni jre di eclipse (con installazione esterna maven) ...
Rob

124

Per me, nulla ha funzionato fino a quando non ho apportato questa modifica al mio pom.xml:

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

Altre note

Ho visto che m2e stava eseguendo un JRE, non il JDK. Nulla di ciò che ho fatto è cambiato, incluso l'aggiunta di questo a eclipse.ini:

-vm
C:\Program Files\Java\jdk1.7.0_45\bin\javaw.exe

Alla fine non ho mai avuto m2e da ​​eseguire in un JDK, ma l'impostazione esplicita del compilatore Java (come sopra) ha fatto il trucco.


10
Questa soluzione dovrebbe essere implementata come ultima risorsa, poiché il progetto stesso viene modificato per essere accoppiato alla tua attuale macchina di sviluppo.
Xtreme Biker,

@ksnortum grazie! questa è l'unica cosa che l'ha fatto funzionare per me.
Antony Fuentes Artavia,

Che dire di noi gente di Linux qui?
logicbloke,

Ho il sospetto che sia praticamente lo stesso, tranne che l'eseguibile sarebbe / percorso / a / java / bin / javac. Forse prova 'quale java` per trovare il tuo percorso Java.
ksnortum,

41

Nel mio caso è stato risolto facendo questo:

Vai su 'Runtime Configuration' e configura il tuo JRE su un JDK.

Seleziona il JDK giusto per il tuo Runtime

Seleziona JRE predefinito

Ho copiato la risposta nel caso in cui venga eliminata per qualche motivo, ma la fonte è qui


Questo ha funzionato per me. Se JDK non viene visualizzato nel menu a discesa JRE alternativo, quindi è necessario aggiungere JRE installato (accedere alla cartella in cui è installato JDK) e selezionare la cartella JDK.
Atul,

Questo era il mio problema, grazie per la tua risposta è stato risolto.
Amr Afifi,

38

Stavo ottenendo questo errore quando provavo a fare una build maven dall'interno di Eclipse.

Per me, la risposta stava per Run-> Run Configurations, selezionando l' Maven Buildio in esecuzione (dal pannello di sinistra). Quindi, ho fatto clic sulla JREscheda e ho selezionato l'opzioneWorkspace default JRE


1
Questo sembra essere necessario per verificare oltre alla risposta selezionata sopra.
nsandersen,

1
Mi piace di più questa soluzione, in quanto non ti fa cambiare la versione java predefinita per altri progetti.
Gonen,

30

Vai a windows -> Preferenze -> Java -> JRE installati

potrebbe essere jre è già stato aggiunto inserisci qui la descrizione dell'immagine

fare clic su Aggiungi -> VM standard -> Avanti -> Directory

e cercare il JDK nel mio caso C:\Program Files\Java\jdk1.8.0_111

quindi fare clic su Fine.

vedrai una finestra come questainserisci qui la descrizione dell'immagine

selezionare JDK -> Applica -> Ok

E hai finito.


1
Grazie per aver condiviso il percorso JDK. Sembrava che le persone potessero scegliere un'altra opzione per fare clic su JDK quando JRE era visualizzato solo dall'inizio. Ho aggiunto JDK dal percorso che hai fornito.
In-giovane Choung,

19

Ho avuto lo stesso problema e ho solo aggiunto JAVA_HOMEalle variabili di ambiente .

env var

  • Se si utilizza eclipse, fare riferimento a https://stackoverflow.com/a/21279068/6097074
  • Se si utilizza intellij, subito dopo aver aggiunto il JAVA_HOMEprompt dei comandi aperto dalla directory del progetto ed eseguito mvn clean install(non utilizzare il terminale intellij).

14

Ho provato tutto quanto sopra, tuttavia, ottenendo ancora lo stesso messaggio di errore.

Nel mio caso, un JRE effettivo è stato erroneamente utilizzato come libreria di sistema JRE nel percorso di build specifico del progetto che ovviamente sostituiva tutte quelle altre impostazioni discusse qui.

Se è così nel tuo caso, prova quanto segue:

  1. Aprire le librerie specifiche del progetto di Java Build Path: fare clic con il tasto destro del mouse su "Progetto> Build Path> Configura Build Path ..." e selezionare la scheda "Librerie".
  2. Selezionare la voce "Libreria di sistema JRE" e premere "Rimuovi".
  3. Premi "Aggiungi libreria ...".
  4. Viene visualizzato un mago. Selezionare "JRE System Library" e premere "Avanti>".
  5. Ora seleziona il JDK corretto (nel mio caso "JRE di default dell'area di lavoro", che ho configurato usando un JDK).
  6. Chiudi la procedura guidata premendo "Fine".
  7. Chiudi la finestra di dialogo "Proprietà" premendo "OK".

1
Ho provato tutte le opzioni sopra menzionate da @ishu, ma sto ancora ottenendo org.apache.maven.lifecycle.LifecycleExecutionException: Impossibile eseguire l'obiettivo org.apache.maven.plugins: maven-compilatore-plugin: 3.1: compilare (default-compilare) on project hibernateTest1: errore di compilazione, quindi ho provato la soluzione, ma nessuna modifica all'errore ... Per favore, aiutatemi.
Namrata Choudhary,

Aggiungi il <build> <sourceDirectory>flockWebclient</sourceDirectory> <resources> <resource> <directory>resources</directory> <excludes> <exclude>**/*.java</exclude> </excludes> </resource> </resources> <plugins> <plugin> <artifactId>maven-compiler-plugin</artifactId> <version>3.5.1</version> <configuration> <source>1.8</source> <target>1.8</target> </configuration> </plugin> </plugins> </build>tuo pom.xml
Alekya il

11

Un'alternativa se la risposta di jaipster non funziona è quella di andare a:
Finestra> Preferenze> Java> JRE installati

Quindi modificare il jre in modo che punti al jdk e non al jre (la home jre archiviata nell'editor del pacchetto jre)

Questo ha funzionato per me.


Questo è stato per me. Divertente è che a volte ricevo errori che il JRE predefinito indica erroneamente un JDK.
Salsero69,

ha funzionato per me, voglio fare maven clean install compilate
asifaftab87

10

Se si esegue il Mavencomando da cmd, assicurarsi di impostare il percorso jdk prima di eseguire il comando. Nel mio caso, ho creato un .batfile contenente quanto segue:

set JAVA_HOME=C:\Program Files\Java\jdk1.8.0_60
start cmd.exe /k "cd c:\aem_proj\sis\aau"

8

Ho riscontrato lo stesso problema durante il tentativo di creare un file jar dell'applicazione di progetto utilizzando mvn clean install , sebbene l'applicazione funzionasse correttamente durante l'esecuzione da Eclipse.

Il problema era, invero troppo ingenuo, che non avevo impostato la variabile d'ambiente JAVA_HOME . Tutto quello che dovevo fare è impostare la variabile d'ambiente JAVA_HOME sulla directory JDK, assicurarmi che non sia fino a "\ bin" e senza punto e virgola ";" .

inserisci qui la descrizione dell'immagine

Come ho capito è come:

L'applicazione funzionava perfettamente in Eclipse poiché JRE System Library si riferiva a JRE all'interno della cartella JDK anziché alla cartella JRE esterna senza JDK. [Come spiegato molto bene in altre risposte]

Questa configurazione non si applica al comando maven che eseguiamo al prompt dei comandi. Cercherà comunque la variabile JAVA_HOME per accedere alla libreria del sistema JRE e quando non viene trovata fa riferimento alla cartella JRE esterna senza JDK.


6

Esistono diverse opzioni da specificare.

Passaggi: direttamente sul progetto in Esplora progetti Vai su Esegui-> Esegui configurazione -> Fai clic su Maven Build -> Fai clic sulla tua configurazione di configurazione / o crea una nuova configurazione. Vedrai la finestra come l'istantanea indicata di seguito, fai clic sulla scheda JRE lì.

Vedete che avete 3 opzioni 1) JRE predefinito dell'area di lavoro 2) Ambiente di esecuzione 3) JRE alternativo inserisci qui la descrizione dell'immagine 1) JRE predefinito dell'area di lavoro è impostato dal menu 'Finestra' in alto -> Preferenze -> Java -> JRE installati -Qui è possibile aggiungere il proprio jdk inserisci qui la descrizione dell'immagine 2) Ambiente di esecuzione jdk può essere impostato in pom.xml come indicato da @ksnortum

<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) JRE alternativo può essere utilizzato per selezionare un jdk dalla propria directory


5

Per me il JRE era nella variabile d'ambiente PATH prima del percorso JDK

  1. C: \ ProgramData \ Oracle \ Java \ JavaPath
  2. C: \ env \ jdk1.8.0_151 \ bin

Quindi ho rimosso 1. Probabilmente lo scambio di loro avrebbe risolto anche.


5

La mia risposta riguarda l'ambiente Eclipse in Windows.

Sono andato su Preferenze -> Java -> JRE installati NON ho visto il JDK qui. Ho visto solo il JRE qui. Quindi ho aggiunto il JDK e quindi deselezionato il JRE. Quindi controllato JDK. Quindi ho eseguito il file POM utilizzando Run Configurations. Scegli la scheda JRE e seleziona l'opzione "Area di lavoro predefinita ..." Ecco le immagini

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine


5

Dichiarazione problema = Nessun compilatore fornito in questo ambiente. Forse stai eseguendo un JRE anziché un JDK? IntelliJ

Soluzione

Impostare la variabile di ambiente come di seguito per risolvere il problema

Nome della variabile : JAVA_HOME

Valore variabile : C: \ Programmi \ Java \ jdk1.8.0_202

Nome della variabile : M2_HOME

Valore variabile : C: \ Programmi \ apache-maven-3.6.0

Inoltre , aggiungi il percorso Java e maven in " Variabili di sistema " come di seguito:

  1. C: \ Programmi \ Java \ jdk1.8.0_202 \ bin

  2. C: \ Programmi \ apache-maven-3.6.0 \ bin


3

C'è un'altra possibile risposta a questa domanda, e potrei essere l'unica persona abbastanza sciocca da essermi imbattuta in questo, ma penso che valga la pena aggiungere, dal momento che nessuna delle altre risposte è stata applicata poiché avevo già corretto quelle impostazioni.

Quando si installa un JDK, il programma di installazione richiede dove si desidera installare i file. Per impostazione predefinita, su Windows, è qualcosa come C: \ Programmi \ Java \ jdk1.8.0_74 (o qualunque versione si stia installando).

Ti chiede quindi una directory in cui installare JRE, che per impostazione predefinita è qualcosa come C: \ Programmi \ Java \ jre1.8.0_74.

Si noti che uno è jdk 1.8.0_74 e l'altro è jre 1.8.0_74

Stavo affrettando le cose e pensando che l'installatore mi stesse ponendo la stessa domanda due volte, ho impostato entrambe le posizioni di installazione di JDK e JRE su D: \ devtools \ jdk \ jdk1.8.0_74, con il risultato che l'installer sovrascriveva JDK con JRE. Ciò ha comportato (tra le altre cose) un javac.exe mancante nel mio cestino JDK e lo stesso errore che l'OP ha riportato qui in tutte le mie build maven.


3

Ho una soluzione.

La soluzione più comune per questo problema è cambiare la posizione di jdk come JRE installati anziché la posizione di JRE, ma questa volta non ho risolto il mio problema.

Quindi ho fatto quanto segue per risolvere il problema. Espandi la scheda JRE installati e troverai una scheda Ambienti di esecuzione .

Fai clic sul tuo ambiente di esecuzione preferito. Nel mio caso era JAVASE-1.8 . Lì mostra 2 opzioni. JDK e JRE . Seleziona JDK lì e il problema è risolto.

inserisci qui la descrizione dell'immagine


2

Ho perso 3 ore con questo problema fino a quando non sono riuscito a farlo funzionare. Ho avuto questo errore nel Terminale Eclipse quando ho emesso un comando di compilazione mvn:

Nessun compilatore è fornito in questo ambiente. Forse stai eseguendo un JRE anziché un JDK?

Quindi ho letto qui che devo creare una nuova variabile di sistema chiamata JAVA_HOME e farla puntare verso la cartella di installazione jdk. Tuttavia, ciò ha generato un altro errore:

L'opzione di origine 1.5 non è più supportata. Utilizzare 1.6 o versioni successive

Impossibile trovare una soluzione per questo quindi ...

Quindi la soluzione per far sparire tutto è installare Java SE Development Kit 8! Stavo usando 9 pensando che se è l'ultimo deve essere migliore ...

Comunque...

  1. Disinstallare tutte le versioni java dal computer
  2. Installa JDK8 da qui: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. Quindi definire il valore ambientale del sistema JAVA_HOME - tutorial qui: https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. Riavvia Eclipse e divertiti! (almeno è quello che ho fatto)

Sperando che questo risparmi qualche povero vagabondo di qualche problema.


2

Nel mio caso il percorso della variabile di sistema ha la posizione "C: \ ProgramData \ Oracle \ Java \ javapath".

Nella posizione "C: \ ProgramData \ Oracle \ Java \ javapath" java, javaw solo lì. Quindi sto ottenendo lo stesso errore.

Dopo aver rimosso tutti i file nella cartella "C: \ ProgramData \ Oracle \ Java \ javapath" il mio errore è stato risolto.


2

Ho provato la maggior parte delle risposte senza successo. Ciò che ha funzionato per me è stato (dopo aver seguito https://stackoverflow.com/a/21279068/2408893 ):

  • tasto destro del mouse sul progetto -> Proprietà
  • seleziona Java Build Path
  • selezionare la libreria di sistema JRE
  • fai clic su modifica
  • Nell'ambiente di esecuzione selezionare un jdk

inserisci qui la descrizione dell'immagine

  • fai clic su Fine
  • costruire ed eseguire

2

Anche se la domanda riguarda l'errore con l' Eclipseinstallazione, ma ho pensato a una risposta per risolvere l'erroreIntelliJ e l'installazione di Windows 10 possa essere utile anche qui.

1 . Vai a File-> Settings-> Build, Execution, Deployment-> Build Tools-> Maven->Importing

2 . Imposta JDKper Importercome indicato di seguito perJAVA_HOME

inserisci qui la descrizione dell'immagine

Inoltre, è JAVA_HOMEnecessario impostare il JDKpercorso su Variabili d'ambiente -> Variabili di sistema e aggiungere anche %JAVA_HOME%\binalle variabili Sistema di percorso


1

ho affrontato lo stesso problema, l'errore che ho fatto è stato l'aggiunta del percorso jre solo nel percorso var, non nel percorso jdk. Quando il percorso jdk è stato aggiunto al percorso e ho creato il progetto maven il suo funzionamento perfetto. Grazie a tutti


1

Ho fatto la seguente modifica e ha funzionato per me. Spero che aiuti qualcuno.inserisci qui la descrizione dell'immagine


1

Prova questo.

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


1

Stavo ottenendo lo stesso errore quando ho creato una nuova istanza di Ubuntu 16.04 EC2 con Java già installato su di esso e durante l'esecuzione del pacchetto mvn clean, ho riscontrato questo problema e la soluzione di seguito ha funzionato per me.

Se stai lavorando su un server Ubuntu, puoi provare a installare di nuovo Java e per questo puoi usare questa risposta Come installare JDK su Ubuntu Linux


1

In Windows 7 - 64 bit, esiste un problema di autorizzazioni che impedisce al programma di installazione di decomprimere il file C: \ Programmi \ Java \ jdk1.6.xx \ lib \ tools.jar nel proprio locale. Questo file jar è quello che usa la versione 3.x di maven-compilatore-plugin invece del solito javac

Soluzione: eseguire, come amministratore, il programma di installazione JDK di Java! E assicurati che tools.jar si trovi in ​​C: \ Programmi \ Java \ jdk1.6.xx \ lib \

Nel caso in cui si stia utilizzando il plugin di integrazione m2e maven, si desidera vedere il file visibile su Eclipse tramite i seguenti passaggi all'interno di Eclipse:

Vai a Finestra -> Preferenze -> Java -> JRE installati Seleziona il JDK che stai utilizzando (C: \ Programmi \ Java \ jdk1.6.xx) Premi Modifica per vedere l'elenco dei barattoli incluso tools.jar, O puoi aggiungilo come Aggiungi JAR esterno Quindi configura il maven run attraverso questi passaggi:

Esegui-> Esegui configurazioni-> Inserisci nome, directory di base e obiettivi. Quindi nella stessa finestra passare alla scheda JRE e selezionare JDK \ jdk1.6.xx \


0

Oltre a rispondere sopra, potrei dire che provo a eseguire Maven dal terminale (al di fuori di Eclipse). In questo modo, se si sviluppa dall'esterno ma non in Eclipse, è possibile comprendere che il problema dovrebbe essere in Eclipse.


0

Esistono diverse risposte riguardo a questa domanda, ma tutte sono correlate alla configurazione del percorso corretto di JDK, ma solo con JRE possiamo risolvere questo problema.

Dobbiamo solo fare uso dell'assembly di distribuzione per configurare il percorso del file di guerra impacchettato del progetto Java EE e quindi rieseguire l'installazione di maven.

Passaggi per utilizzare l'assembly di distribuzione:

  1. Fare clic con il tasto destro sul progetto Jave EE -> fare clic su Proprietà -> fare clic su Deployment Assembly

  2. Fare clic sul pulsante Aggiungi -> Fare clic su Archivi dal file system -> Fare clic su Avanti -> Fare clic su Aggiungi -> Andare alla directory .m2 \ respository e cercare il file di guerra generato -> Seleziona file di guerra -> Fare clic sul pulsante Apri -> Fare clic su Applica -> OK

  3. Fare clic con il tasto destro sul progetto -> Fare clic su Installa Maven in Esegui come

Questo costruirà il tuo progetto con successo, senza alcun errore del compilatore.

Spero che questo risolva il problema senza JDK.

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.