No se proporciona ningún compilador en este entorno. ¿Quizás estás corriendo en un JRE en lugar de un JDK?

633

Estoy compilando un proyecto en Eclipse usando m2eclipse. Configuré la ruta JDK en Eclipse así:

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

Pero esto muestra un error

[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?
Sai prateek
fuente
1
¿Cómo estás comenzando la compilación? ¿Línea de comando? Herramienta Eclipse?
Joeri Hendrickx
desde la herramienta eclipse Ejecutar configuración -> Objetivos: instalación limpia
Sai prateek
posible duplicado del error de compilación del paquete Maven
mlt
77
Hola, este error viene porque Maven está tratando de obtener JDK pero en eclipse apunta a JRE. Puede cambiar la ruta a JDK y funcionará. Consulte la siguiente publicación que lo ayudará a aprender-automation.com/…
Mukesh otwani
Estoy publicando un enlace para que alguien en el futuro pueda beneficiarse como lo hice yo. stackoverflow.com/a/33873838/4525120
divino

Respuestas:

983
  1. En su Eclipse IDE, vaya a Ventana > Preferencias > Java > JRE instalados > y verifique sus JRE instalados . Debería tener una entrada con un JDK allí.
  2. Seleccione el entorno de ejecución como se muestra a continuación. Haga clic en Aceptar
  3. Luego haga clic derecho en su proyecto -> Maven -> Actualizar proyecto

Además, es posible que deba cambiar Maven JRE (consulte la respuesta de @ jlars62), que es la siguiente. Ir a Ejecutar -> Ejecutar configuraciones, seleccionando la Maven Build que estaba ejecutando (desde el panel izquierdo). Luego, hice clic en la pestaña JRE y seleccioné la opción JRE predeterminada del espacio de trabajo

ingrese la descripción de la imagen aquí

Jaipster
fuente
15
@jaipster Intenté hacer esto, pero no pude encontrar el jdk en el panel izquierdo, solo puedo ver el jre7. ¿Sabes por qué?
diyoda_
44
Es posible que tenga jdk7 no instalado en su máquina o que no esté configurado en eclipse. Puedes confirmar.
Jaipster
52
@Diode Tuve el mismo problema. Fui a "JRE instalados" e hice clic en "Agregar ..." Desde allí, navegué hasta C: \ Archivos de programa \ Java \ jdk1.7.0_XX y luego pude seleccionar el jre como lo describió Jaipster.
jlunavtgrad
77
Para mí fue suficiente solo agregar el JDK a la lista de "JRE instalados" (no es el mejor nombre ...) y marcar la casilla de verificación junto a la nueva entrada JDK que lo convierte en la VM predeterminada.
Tom Fink
77
Hice clic en el botón "Buscar" en el menú "JRE instalados". Eclipse buscó en una de las unidades que le señalé y salió con todos los JRE y JDK instalados.
The Mitra Boy
141

Para mí, es exactamente lo que se queja el experto en eclipse

ingrese la descripción de la imagen aquí

Entonces, presiono el Editbotón y cambio la ruta a la carpeta JDK, luego limpio el proyecto y todo comienza a funcionar

Thai Tran
fuente
3
¡Prefiero sugerir agregar el JRE usando el botón "Agregar" y luego manipular una entrada JRE para convertirla en una entrada JDK! Y después de agregar el JDK, haga clic en la casilla de verificación junto a la entrada JDK. Esto ya debería resolver los problemas descritos en esta publicación.
Tom Fink
3
Es raro . porque como muestra el título del cuadro de diálogo, esto debería colocar la Installed JREscarpeta en lugar de jdk. Pero realmente me resolvió el problema. Gracias
Joe.wang
Está cargado, el título es JRE instalado, pero la ruta es JDK, pero de todos modos funciona, gracias
Abhijit Chakra
Es una buena idea eliminar el JRE después de agregar el JDK. A veces, Eclipse sigue usando el JRE independientemente, no tengo idea de por qué este es el caso. Hacer que el JDK sea la única opción disponible ayuda. :)
leftbit
128
  1. Establezca la JAVA_HOMEvariable de entorno en la carpeta raíz JDK, necesaria si ejecuta la línea de comandos o maven ( mvn).
    • (Busque en google JAVA_HOMEpara más información)
  2. En las propiedades del proyecto en la sección Compilador Java, seleccione el JDK requerido, si ejecuta directamente desde eclipse
msangel
fuente
¿Por qué se requiere el paso 1?
Duncan Jones
2
@DuncanJones, primero es necesario si ejecuta la línea de comando o maven (google para esta variable), segundo - si se ejecuta directamente desde eclipse,
msangel
1
Agregaría esa información a su respuesta. De lo contrario, sugiere que ambos son necesarios en todos los casos.
Duncan Jones
10
Tenga en cuenta que JAVA_HOME no termina con "bin", sino que apunta a la raíz del JDK.
koppor
Lo necesitaba para el complemento de lanzamiento, ya que no usa la configuración jre de eclipse (con instalación externa de maven) ...
Rob
124

Para mí, nada funcionó hasta que hice este cambio en mi 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>

Otras notas

Pude ver que m2e se estaba ejecutando en un JRE, no en el JDK. Nada de lo que hice cambió esto, incluso agregar esto al eclipse.ini:

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

Al final, nunca conseguí que m2e se ejecutara en un JDK, pero configurar el compilador de Java explícitamente (como arriba) hizo el truco.

ksnortum
fuente
10
Esta solución debe implementarse como último recurso, ya que el proyecto en sí mismo se modifica para ser acoplado a su máquina de desarrollo actual.
Xtreme Biker
@ksnortum gracias! Esto es lo único que lo hizo funcionar para mí.
Antony Fuentes Artavia
¿Qué hay de nosotros, amigos de Linux aquí?
logicbloke
Sospecho que es más o menos lo mismo, excepto que el ejecutable sería / ruta / a / java / bin / javac. Tal vez intente 'which java' para encontrar su ruta Java.
ksnortum
41

En mi caso se resolvió haciendo esto:

Vaya a su 'Configuración de tiempo de ejecución' y configure su JRE en un JDK.

Seleccione el JDK correcto para su tiempo de ejecución

Seleccionar JRE predeterminado

Copié la respuesta solo en caso de que se elimine por alguna razón, pero la fuente está aquí

Eduardo Dennis
fuente
Esto funcionó para mí. Si JDK no se muestra en el menú desplegable JRE alternativo, debe agregar JRE instalado (navegar a la carpeta donde está instalado JDK) y seleccionar la carpeta JDK.
Atul
Este fue mi problema, gracias por su respuesta se resolvió.
Amr Afifi
38

Recibía este error cuando intentaba hacer una construcción maven desde dentro del eclipse.

Para mí, la respuesta iba a Run-> Run Configurations, seleccionando el Maven Buildque estaba ejecutando (desde el panel izquierdo). Luego, hice clic en la JREpestaña y seleccioné la opciónWorkspace default JRE

jlars62
fuente
1
Esto parece ser necesario verificar además de la respuesta seleccionada arriba.
nsandersen
1
Esta solución me gusta más, ya que no te hace cambiar la versión predeterminada de Java para otros proyectos.
Gonen I
30

Vaya a Windows -> Preferencias -> Java -> JRE instalados

puede ser jre ya está agregado ingrese la descripción de la imagen aquí

haga clic en Agregar -> VM estándar -> Siguiente -> Directorio

y buscar el JDK en mi caso fue C:\Program Files\Java\jdk1.8.0_111

luego haga clic en finalizar.

verás una ventana como estaingrese la descripción de la imagen aquí

seleccione JDK -> Aplicar -> Ok

Y ya terminaste.

GauRang Omar
fuente
1
Gracias por compartir la ruta JDK. Parecía que las personas podían elegir otra opción para hacer clic en JDK cuando solo tenía JRE mostrado desde el principio. Agregué JDK desde el camino que había proporcionado.
Choung in-young
19

Tengo mismo problema y acabo de añadir JAVA_HOMEa las variables de entorno .

env var

  • Si está utilizando eclipse, simplemente consulte https://stackoverflow.com/a/21279068/6097074
  • Si está usando intellij, justo después de agregar JAVA_HOMEel símbolo del sistema abierto desde el directorio del proyecto y ejecutarlo mvn clean install(no use el terminal intellij).
ankit
fuente
14

Intenté todo lo anterior, sin embargo, todavía recibo el mismo mensaje de error.

En mi caso, un JRE real se usó incorrectamente como Biblioteca del sistema JRE en la ruta de compilación específica del proyecto, que obviamente anulaba todas esas otras configuraciones discutidas aquí.

Si es así en su caso, intente lo siguiente:

  1. Abra las bibliotecas específicas del proyecto de Java Build Path: haga clic con el botón derecho en "Proyecto> Build Path> Configurar Build Path ..." y seleccione la pestaña "Bibliotecas".
  2. Seleccione la entrada "Biblioteca del sistema JRE" y presione "Eliminar".
  3. Presiona "Agregar biblioteca ...".
  4. Aparece un mago. Seleccione "Biblioteca del sistema JRE" y presione "Siguiente>".
  5. Ahora seleccione el JDK correcto (en mi caso, "JRE predeterminado del espacio de trabajo", que configuré usando un JDK).
  6. Cierre el asistente presionando "Finalizar".
  7. Cierre el cuadro de diálogo "Propiedades" presionando "Aceptar".
Sir Hackalot
fuente
1
He intentado todas las opciones mencionadas anteriormente por @ishu, pero aún obtengo org.apache.maven.lifecycle.LifecycleExecutionException: no se pudo ejecutar el objetivo org.apache.maven.plugins: maven-compiler-plugin: 3.1: compile (default-compile) en el proyecto hibernateTest1: Error de compilación, luego probé su solución, pero no hubo cambios por error ... Por favor, ayúdenme.
Namrata Choudhary
Agregue <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>su pom.xml
Alekya
11

Una alternativa si la respuesta de jaipster no funciona es ir a:
Ventana> Preferencias> Java> JRE instalados

Luego, edite el jre para que apunte al jdk y no al jre (la página de inicio de jre archivada en el editor de paquetes jre)

Eso funcionó para mí.

brunoais
fuente
Eso fue todo por mí. Es curioso que a veces recibo errores de que el JRE predeterminado apunta erróneamente a un JDK.
Salsero69
funcionó para mí, quiero hacer compilación de instalación limpia de maven
asifaftab87
10

Si está ejecutando el Mavencomando desde cmd, asegúrese de establecer la ruta jdk antes de ejecutar el comando. En mi caso, he creado un .batarchivo que contiene lo siguiente:

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

Enfrenté el mismo problema al intentar construir un archivo jar de mi aplicación de proyecto usando mvn clean install, aunque la aplicación funcionaba bien mientras se ejecutaba desde Eclipse.

El problema era, de hecho, demasiado ingenuo, que no había configurado la variable de entorno JAVA_HOME . Todo lo que tenía que hacer es establecer la variable de entorno JAVA_HOME en el directorio JDK, asegúrese de que no sea hasta "\ bin" y sin punto y coma ";" .

ingrese la descripción de la imagen aquí

Cómo lo entendí es como:

La aplicación funcionó bien en Eclipse ya que JRE System Library se refería a JRE dentro de la carpeta JDK en lugar de la carpeta JRE externa sin JDK. [Como se explica muy bien en otras respuestas]

Esta configuración no se aplica al comando maven que ejecutamos en el símbolo del sistema. Seguirá buscando la variable JAVA_HOME para acceder a la biblioteca del sistema JRE y, cuando no se encuentre, se referirá a la carpeta JRE externa sin JDK.

Dhaval Simaria
fuente
6

Hay varias opciones para especificar.

Pasos: Justo en el proyecto en el explorador de proyectos Vaya a Ejecutar-> Ejecutar configuración -> Haga clic en Maven Build -> Haga clic en su configuración de compilación / o cree una nueva configuración. Verá la ventana como la instantánea dada a continuación, haga clic en la pestaña JRE allí.

Verá que tiene 3 opciones 1) JRE predeterminado del espacio de trabajo 2) Entorno de ejecución 3) JRE alternativo ingrese la descripción de la imagen aquí 1) El JRE predeterminado del espacio de trabajo se configura desde el menú 'Ventana' en la parte superior -> Preferencias -> Java -> JRE instalados - Aquí puede agregar su jdk ingrese la descripción de la imagen aquí 2) Entorno de ejecución jdk se puede configurar en pom.xml como lo menciona @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) Se puede usar JRE alternativo para seleccionar un jdk de su directorio

Manntsheth
fuente
5

Para mí, el JRE estaba en la variable de entorno PATH antes de la ruta JDK

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

Así que eliminé 1. Probablemente cambiarlos también lo arreglaría.

Florin D
fuente
5

Mi respuesta se refiere al entorno Eclipse en Windows.

Fui a Preferencias -> Java -> JRE instalados. NO vi el JDK aquí. Solo vi el JRE aquí. Así que agregué el JDK y luego desmarqué el JRE. Luego revisó JDK. Luego ejecuté el archivo POM usando Ejecutar configuraciones. Elija la pestaña JRE y seleccione la opción "Espacio de trabajo predeterminado ..." Aquí están las imágenes

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí

Krishna Rajagopalan
fuente
5

Planteamiento del problema = No se proporciona ningún compilador en este entorno. ¿Quizás estás corriendo en un JRE en lugar de un JDK? intellij

Solución

Configure la variable de entorno como se muestra a continuación para resolver el problema

Nombre de la variable : JAVA_HOME

Valor variable : C: \ Archivos de programa \ Java \ jdk1.8.0_202

Nombre de la variable : M2_HOME

Valor variable : C: \ Archivos de programa \ apache-maven-3.6.0

Además , agregue la ruta Java y Maven en " Variables del sistema " como a continuación:

  1. C: \ Archivos de programa \ Java \ jdk1.8.0_202 \ bin

  2. C: \ Archivos de programa \ apache-maven-3.6.0 \ bin

Navdeep Ghotra
fuente
3

Hay otra posible respuesta a esta pregunta, y puedo ser la única persona lo suficientemente tonta como para haber tropezado con esto, pero creo que vale la pena agregarlo, ya que ninguna de las otras respuestas se aplicaron ya que ya tenía esa configuración correcta.

Cuando instala un JDK, el instalador le pregunta dónde desea instalar los archivos. De forma predeterminada, en Windows, esto es algo así como C: \ Archivos de programa \ Java \ jdk1.8.0_74 (o cualquier versión que esté instalando).

Luego le pide un directorio para instalar el JRE, que por defecto es algo así como C: \ Archivos de programa \ Java \ jre1.8.0_74.

Tenga en cuenta que uno es jdk 1.8.0_74 y el otro es jre 1.8.0_74

Estaba apurando las cosas, y pensando que el instalador me estaba haciendo la misma pregunta dos veces, configuré mis ubicaciones de instalación JDK y JRE en D: \ devtools \ jdk \ jdk1.8.0_74, lo que resultó en que el instalador sobrescribiera el JDK con el JRE. Esto resultó en (entre otras cosas) un javac.exe faltante en mi bin JDK, y el mismo error que el OP reportó aquí en todas mis compilaciones de Maven.

Sam
fuente
3

Tengo una solución

La solución más común para este problema es cambiar la ubicación de jdk como mis JRE instalados en lugar de la ubicación de JRE, pero eso no resolvió mi problema esta vez.

Entonces hice lo siguiente para resolver el problema. Expanda la pestaña JRE instalados y encontrará una pestaña Entornos de ejecución .

Haga clic en su entorno de ejecución favorito. En mi caso fue JAVASE-1.8 . Allí muestra 2 opciones. JDK y JRE . Seleccione JDK allí y el problema está resuelto.

ingrese la descripción de la imagen aquí

Vero J
fuente
2

Solo perdí 3 horas con este problema hasta que logré hacerlo funcionar. Tuve este error en la Terminal Eclipse al emitir un comando de compilación mvn:

No se proporciona ningún compilador en este entorno. ¿Quizás estás corriendo en un JRE en lugar de un JDK?

Entonces leí aquí que tengo que hacer una nueva variable del sistema llamada JAVA_HOME y hacer que apunte hacia la carpeta de instalación de jdk. Sin embargo, esto generó otro error:

La opción de origen 1.5 ya no es compatible. Use 1.6 o posterior

No se pudo encontrar una solución para este, así que ...

¡Entonces la solución para que todo desaparezca es instalar Java SE Development Kit 8! Estaba usando 9 pensando que si es lo último debe ser mejor ...

De todas formas...

  1. Desinstale todas las versiones de Java de su computadora
  2. Instale JDK8 desde aquí: http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html

  3. Luego defina el valor ambiental del sistema JAVA_HOME - tutorial aquí: https://docs.oracle.com/cd/E19509-01/820-3208/inst_cli_jdk_javahome_t/

  4. Reinicia Eclipse y disfruta! (al menos eso es lo que hice)

Esperando que esto ahorre a algún pobre vagabundo de algunos problemas.

JustNatural
fuente
2

En mi caso, tuve una ruta variable del sistema que tiene la ubicación "C: \ ProgramData \ Oracle \ Java \ javapath".

En "C: \ ProgramData \ Oracle \ Java \ javapath" ubicación java, javaw solo allí. Entonces obtengo el mismo error.

Una vez que eliminé todos los archivos en la carpeta "C: \ ProgramData \ Oracle \ Java \ javapath", mi error se resolvió.

Raja
fuente
2

Intenté la mayoría de las respuestas sin éxito. Lo que funcionó para mí fue (después de seguir https://stackoverflow.com/a/21279068/2408893 ):

  • haga clic derecho en proyecto -> Propiedades
  • seleccione Java Build Path
  • seleccione la biblioteca del sistema JRE
  • haga clic en editar
  • En el entorno de ejecución, seleccione un jdk

ingrese la descripción de la imagen aquí

  • haga clic en Finalizar
  • construir y ejecutar
Emile Maras
fuente
2

Aunque la pregunta es sobre el error con la Eclipseconfiguración, pero pensé en una respuesta para solucionar este error conIntelliJ y la configuración de Windows 10 también puede ser útil aquí.

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

2 . Ajuste JDKpara Importercomo se muestra a continuación paraJAVA_HOME

ingrese la descripción de la imagen aquí

También JAVA_HOMEdebe establecerse en la JDKruta en Variables de entorno -> Variables del sistema y también agregar %JAVA_HOME%\bina las variables del Sistema de ruta

Nafeez Quraishi
fuente
1

Me enfrenté al mismo problema, el error que cometí fue que agregué la ruta jre solo en la ruta var, no en la ruta jdk. Cuando se agregó la ruta jdk a la ruta y construí el proyecto maven, funciona perfectamente. Gracias a todos

Sapna
fuente
1

Hice el siguiente cambio y funcionó para mí. Espero que ayude a alguien.ingrese la descripción de la imagen aquí

Kunal Khaire
fuente
1

Prueba esto.

<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>
Wagh
fuente
1

Recibí el mismo error cuando creé una nueva instancia de EC2 ubuntu 16.04 con Java ya instalada y, mientras ejecutaba mvn clean package, encontré este problema y la siguiente solución funcionó para mí.

Si está trabajando en un servidor Ubuntu, puede intentar instalar Java nuevamente y para eso puede usar esta respuesta Cómo instalar el JDK en Ubuntu Linux

Ishan Ojha
fuente
1

En Windows 7 - 64 bits, hay un problema de permisos que impide que el instalador desempaque el archivo C: \ Archivos de programa \ Java \ jdk1.6.xx \ lib \ tools.jar en su local. Este archivo jar es lo que usa maven-compiler-plugin versión 3.x en lugar del javac habitual

Solución: ¡ Ejecute, como administrador, el instalador Java JDK! Y asegúrese de que tools.jar esté en C: \ Archivos de programa \ Java \ jdk1.6.xx \ lib \

En caso de que esté utilizando el complemento de integración m2e maven, desea ver que Eclipse puede ver el archivo a través de los siguientes pasos dentro de Eclipse:

Vaya a Ventana -> Preferencias -> Java -> JRE instalados Seleccione el JDK que está utilizando (C: \ Archivos de programa \ Java \ jdk1.6.xx) Presione Editar para ver la lista de jarras, incluidas tools.jar, O puede agréguelo como Agregar JAR externo A continuación, configure la ejecución de maven a través de estos pasos:

Ejecutar-> Ejecutar configuraciones-> Completar Nombre, Directorio base y Objetivos. Luego, en la misma ventana, vaya a la pestaña JRE y apunte a JDK \ jdk1.6.xx \

Parthiban
fuente
0

Además de la respuesta anterior, podría decir que solo intente ejecutar Maven desde la terminal (fuera de Eclipse). De esta manera, si se construye desde afuera pero no en Eclipse, puede comprender que el problema debería estar en Eclipse.

Indefinidamente
fuente
0

Hay varias respuestas con respecto a esta pregunta, pero todas están relacionadas con la configuración de ruta correcta de JDK, pero con JRE solo podemos resolver este problema.

Solo necesitamos hacer uso del ensamblaje de implementación para configurar la ruta del archivo de guerra empaquetado del Proyecto Java EE y luego volver a ejecutar la instalación de maven.

Pasos para hacer uso del ensamblaje de implementación:

  1. Haga clic derecho en el proyecto Jave EE -> haga clic en Propiedades -> haga clic en Ensamblaje de implementación

  2. Haga clic en el botón Agregar -> Haga clic en Archivos desde el Sistema de archivos -> Haga clic en siguiente -> Haga clic en Agregar -> Vaya al directorio .m2 \ respository y busque el archivo de guerra generado -> Seleccione el archivo de guerra -> Haga clic en el botón Abrir -> Haga clic en Aplicar -> Aceptar

  3. Haga clic derecho en el proyecto -> Haga clic en Instalar Maven en Ejecutar como

Esto construirá su proyecto con éxito, sin ningún error del compilador.

Espero que esto resuelva el problema sin JDK.

S Kumar
fuente