Nessun compilatore è fornito in questo ambiente. Forse stai lavorando su un JRE piuttosto che su un JDK?

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

Inoltre, potrebbe essere necessario modificare Maven JRE (vedere @ risposta jlars62) che è la seguente. Vai a Esegui -> Esegui configurazioni, selezionando Maven Build I in esecuzione (dal pannello di sinistra). Quindi, ho fatto clic sulla scheda JRE e selezionato l’opzione JRE predefinito dell’area di lavoro

inserisci la descrizione dell'immagine qui

Per me, è esattamente ciò che lamenta l’esperto di Eclipse

inserisci la descrizione dell'immagine qui

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

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

  ...  ...  maven-compiler-plugin 3.1  true C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe     

Altre note

Ho potuto vedere che m2e stava eseguendo in un JRE, non nel JDK. Nulla di ciò che ho fatto ha cambiato questa situazione, inclusa l’aggiunta 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 impostare il compilatore Java esplicitamente (come sopra) ha fatto il trucco.

  1. Imposta la variabile di ambiente JAVA_HOME nella cartella principale JDK – richiesta se esegui la riga di comando o maven (google per questa variabile)
  2. Nelle proprietà del progetto nella sezione Compilatore Java selezionare JDK richiesto – se si esegue direttamente da eclipse

Nel mio caso è stato risolto in questo modo:

Vai alla tua ‘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 sia stata cancellata per qualche motivo, ma la fonte è qui

Stavo ricevendo questo errore quando provavo a fare un build di maven da eclipse.

Per me, la risposta era Run -> Run Configurations , selezionando Maven Build I in esecuzione (dal pannello di sinistra). Quindi, ho fatto clic sulla scheda JRE e selezionato l’opzione Workspace default JRE dell’area di Workspace default JRE

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

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

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

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

quindi fare clic su Fine.

vedrai una finestra come questa inserisci la descrizione dell'immagine qui

seleziona JDK -> Applica -> Ok

E hai finito.

Un’alternativa se la risposta di ja hipster non funziona è andare a:
Finestra> Preferenze> Java> JRE installati

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

Questo ha funzionato per me.

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

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

Se è così nel tuo caso prova quanto segue:

  1. Aprire le librerie specifiche del progetto del percorso di costruzione Java: fare clic con il tasto destro del mouse su “Progetto> Percorso di creazione> Configura percorso di creazione …” e selezionare la scheda “Librerie”.
  2. Seleziona la voce “Libreria di sistema JRE” e premi “Rimuovi”.
  3. Premi “Aggiungi libreria …”.
  4. Viene visualizzato un wizard. Seleziona “Libreria sistema JRE” e premi “Avanti>”.
  5. Ora seleziona il JDK corretto (nel mio caso “Workspace default JRE”, che ho configurato usando un JDK).
  6. Chiudi il wizard premendo “Finish”.
  7. Chiudi la finestra di dialogo “Proprietà” premendo “OK”.

Se stai eseguendo il comando Maven da cmd , assicurati di impostare il percorso jdk prima di eseguire il comando. Nel mio caso, ho creato un file .bat contenente quanto segue:

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

Ci sono diverse opzioni da specificare.

Passi: direttamente nel progetto in Esplora progetti Vai a Esegui -> Esegui configurazione -> Fai clic su Configurazione Maven -> Fai clic sulla configurazione di build / o crea una nuova configurazione. Vedrai la finestra come la seguente istantanea, fai clic sulla scheda JRE lì.

Vedete che avete 3 opzioni 1) Area di lavoro predefinita JRE 2) Ambiente di esecuzione 3) JRE alternativo inserisci la descrizione dell'immagine qui 1) Area di lavoro Il JRE predefinito è impostato dal menu ‘Finestra’ in alto -> Preferenze -> Java -> JRE installati – Qui puoi aggiungere il tuo jdk inserisci la descrizione dell'immagine qui 2) Execution Environment jdk può essere impostato in pom.xml come menzionato da @ksnortum

    maven-compiler-plugin 3.1  true C:\Program Files\Java\jdk1.7.0_45\bin\javac.exe    

3) È ansible utilizzare JRE alternativo per selezionare un jdk dalla directory

Ho affrontato lo stesso problema durante il tentativo di creare un file jar della mia applicazione di progetto utilizzando mvn clean install , sebbene l’applicazione funzionasse mvn clean install durante l’esecuzione da Eclipse.

Il problema era, anzi troppo ingenuo, che non avevo impostato la variabile di ambiente JAVA_HOME . Tutto quello che dovevo fare è impostare la variabile d’ambiente JAVA_HOME sulla directory JDK, assicurati che non sia fino a “\ bin” e senza punto e virgola “;” .

inserisci la descrizione dell'immagine qui

Come ho capito è come:

L’applicazione ha funzionato correttamente in Eclipse poiché la libreria di sistema JRE faceva riferimento 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. Continuerà a cercare la variabile JAVA_HOME per accedere alla libreria del sistema JRE e, quando non viene trovata, fa riferimento alla cartella JRE esterna senza JDK.

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

Così ho rimosso 1. Probabilmente lo scambio avrebbe risolto anche questo.

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

Quando installi un JDK, il programma di installazione ti chiede dove vuoi installare i file. Per impostazione predefinita, su Windows, questo è qualcosa come C: \ Programmi \ Java \ jdk1.8.0_74 (o qualsiasi versione che si sta installando).

Quindi ti chiede 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 correndo le cose, e pensando che il programma di installazione mi stesse facendo due volte la stessa domanda, impostai entrambi i miei percorsi di installazione JDK e JRE su D: \ devtools \ jdk \ jdk1.8.0_74, facendo in modo che l’installatore sovrascriva il JDK con JRE. Ciò ha comportato (tra le altre cose) un javac.exe mancante nel mio cestino JDK, e lo stesso errore riportato dall’OP qui in tutte le mie build di maven.

Ho una soluzione

La soluzione più comune per questo problema è quella di modificare la posizione di jdk come JRE installato anziché la posizione di JRE, ma questo non ha risolto il mio problema questa volta.

Così ho fatto il seguito per risolvere il problema. Espandi la scheda JRE installata e troverai la scheda Ambienti di esecuzione .

Clicca 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 la descrizione dell'immagine qui

Ho solo sprecato 3 ore con questo problema finché 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 lavorando su un JRE piuttosto che su un JDK?

Quindi leggo qui che devo creare una nuova variabile di sistema chiamata JAVA_HOME e renderla puntata verso la cartella di installazione di jdk. Tuttavia questo ha generato un altro errore:

L’opzione di origine 1.5 non è più supportata. Utilizzare 1.6 o successivo

Non ho trovato una soluzione per questo così …

Quindi la soluzione per farla andare via è installare Java SE Development Kit 8! Stavo usando 9 pensando che se è l’ultima deve essere migliore …

Comunque…

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

  3. Quindi definisci 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 questo è quello che ho fatto)

Sperando che questo risparmi un povero vagabondo di qualche guaio.

Nel mio caso ho avuto percorso variabile di sistema ha “C: \ ProgramData \ Oracle \ Java \ javapath” posizione.

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

Una volta rimossi tutti i file nella cartella “C: \ ProgramData \ Oracle \ Java \ javapath” il mio errore è stato risolto.

Ho affrontato lo stesso problema, l’errore che ho fatto è stato aggiunto il percorso jre solo nel percorso var, non nel percorso jdk. Quando il percorso jdk è stato aggiunto al percorso e il progetto Maven è stato realizzato perfettamente. Grazie a tutti

Prova questo.

  ...  ...  maven-compiler-plugin 3.1  true  path to jdk \bin\javac.exe     

Aggiungi una nuova definizione JRE (seleziona percorso JDK), ha funzionato per me.

http://help.eclipse.org/neon/index.jsp?topic=%2Forg.eclipse.jdt.doc.user%2Ftasks%2Ftask-add_new_jre.htm

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

Oltre alla risposta di cui sopra, potrei dire che provate solo ad avviare Maven dal terminale (al di fuori di Eclipse). In questo modo, se si costruisce dall’esterno ma non in Eclipse, puoi capire che il problema dovrebbe essere in Eclipse.

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

Abbiamo solo bisogno di utilizzare l’assembly di distribuzione per configurare il percorso del file war pacchettizzato di Java EE Project e quindi eseguire nuovamente l’installazione di maven.

Passi per utilizzare l’assembly di distribuzione:

  1. Fare clic con il tasto destro del mouse 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 -> Vai alla directory .m2 \ respository e cercare il file war generato -> Seleziona file di guerra -> Fare clic sul pulsante Apri -> Fare clic su Applica -> OK

  3. Fare clic con il tasto destro del mouse sul progetto -> Fare clic su Installazione di Maven in Esegui come

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

Spero che questo risolva il problema senza JDK.

Ti manca qualche build di maven.

A parte le modifiche al JRE di cui sopra. Ho ancora affrontato un problema simile. Mancavo la dipendenza JUnit dopo averlo aggiunto funziona correttamente.

Spero che questo ti sia d’aiuto.

Ho lo stesso problema e aggiungo semplicemente JAVA_HOME alle variabili di ambiente .

env var

  • Se utilizzi Eclipse, consulta https://stackoverflow.com/a/21279068/6097074
  • Se stai usando intellij, subito dopo aver aggiunto JAVA_HOME apri prompt dei comandi dalla directory del progetto ed esegui mvn clean install (non usare il terminale intellij).

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 di 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 nuovamente Java e per farlo puoi usare questa risposta Come installare il JDK su Ubuntu Linux