Maven No puede ubicar el compilador de Javac en:

76

Cuando trato de generar un archivo war, muestra algún error como

[ERROR] Unable to locate the Javac Compiler in:
[ERROR] C:\Program Files\Java\jre7\..\lib\tools.jar

Cuando lo hago echo %path%se nota

 C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\b
in;C:\Program Files\Notepad++\;%JDK_HOME%

Cuando lo hago echo %JDK_HOME%

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin

No sé por qué maven se refiere a jre, cuando mi variable de entorno es jdk. También cambié el JRE instalado a jdk1.6.

BKK
fuente
3
El JDK_HOME debería ser el directorio base, es decir, sin el \biny debería tener %JDK_HOME%\binen su ruta. Puedes correr D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04\bin\java -version?
Peter Lawrey
3
Maven espera JAVA_HOMEque se establezca en su directorio de instalación de JDK, no JDK_HOME. Consulte las instrucciones de instalación de Maven .
Jesper

Respuestas:

152

Está solo en la configuración de Eclipse

Tiene 4 pasos TODO.

Paso 1: haga clic con el botón derecho en Propiedades del proyecto Eclipse

Paso 2: Ruta de compilación de Java -> Bibliotecas

Paso 3: Seleccione la biblioteca del sistema JRE -> Haga clic en el botón Editar -> Haga clic en el botón JRE instalados ...

Paso 4: Edite JRE como Establecer JRE Home = JAVA_HOME

ScreentShot:

ingrese la descripción de la imagen aquí

Parthasarathy B
fuente
2
tengo el mismo problema y he hecho lo que se muestra aquí ... y ahora está funcionando bien, pero me pregunto cómo es que hasta ahora funcionó bien sin este cambio (configurando el hogar de Java en jre). para mí mi proyecto funcionó bien hasta ahora, pero de repente recibí este error cuando ejecuto mi proyecto en eclipse.
Antes del
@Preeth: En última instancia, su eclipse podría haber mapeado JDK. si ha eliminado o actualizado JDK, tiene este problema
Parthasarathy B
1
Eclipse a menudo hace referencia a JRE fuera del JDK. Debería cambiar la ruta a JDK / jre. Esto funciona para mi.
emeraldhieu
35

Vaya a Ventana -> Preferencias ... -> Java -> JRE instalados

Editar JRE Home = JAVA_HOME o JAVA_HOME \ jre

Por ejemplo, si usa jdk1.6.0_04 que está instalado en C: \ Archivos de programa, haga el siguiente cambio:

C: \ Archivos de programa \ Java \ jdk1.6.0_04 \ jre o C: \ Archivos de programa \ Java \ jdk1.6.0_04 en lugar del predeterminado que está en C: \ Archivos de programa \ Java \ jre7

Pradeep Vairamani
fuente
1
Funciona si está utilizando eclipse (ejecutar como maven build ..) Pero este error se resolvió configurando la variable de entorno java_home. De todos modos, gracias por su respuesta señor, funcionó para mí en eclipse.
porfiriopartida
Esto funcionó para mí, pero guau - TAN molesto después de configurar cada JAVA_HOME, JDK_HOME, JRE_HOME, etc. posible en mi ubicación jdk (o jdk / jre).
RockMeetHardplace
5

Tuve el mismo problema, pero en mi caso, el directorio eclipse señaló que el JRE era el JDK. Entonces, busqué el archivo tools.jar y estaba allí.

yo hice

  • Ruta de compilación Java >> Bibliotecas
  • Biblioteca del sistema JRE >> Editar
  • JRE instalados >> haga clic en mi jdk >> editar
  • Agregar jarras externas >> tools.jar

Y luego compilado bien

Hinotori
fuente
3

La variable JDK_HOME siempre debe apuntar al directorio base del jdk, no al directorio bin:

D:\name\name\core java\software\Java\Java_1.6.0_04_win\jdk1.6.0_04

Eso definido, fija tu camino para ser

C:\Windows\System32;D:\name\name1\Softwares\Maven\apache-maven-3.0.4\bin;C:\Program Files\Notepad++\;%JDK_HOME%\bin
Bruno Penteado
fuente
3

Fue un problema de Eclipse. Cuando intenté construirlo desde la línea de comando usando

mvn package

funcionó bien.

BKK
fuente
2

Parece que lo ha JDK_HOMEdefinido como una variable de usuario y PATHdefinido como una variable de sistema, o viceversa, echo %PATH%no debe contener variables sin resolver como ...;%JDK_HOME%.

Asegúrese de que la %JDK_HOME%\binruta esté en su variable PATH, sin resolver, incluso si tiene que poner la ruta explícitamente.

mate b
fuente
2

Tuve el mismo error, debido a la versión JUNIT, tenía 3 3.8.1 y cambié a 4.8.1.

entonces la solución es

tienes que ir a POM y asegurarte de que tu dependencia se vea así

 <dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>4.8.1</version>
  <scope>test</scope>
</dependency>
Ibo
fuente
2

Para otros que enfrentan este problema en Eclipse incluso con la ruta configurada correctamente en JDK, debe eliminar los otros JRE de los JRE instalados.

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

Seleccionar JRE no utilizados de forma individual y Eliminar

Funcionó para mí.

HeXMaN
fuente
1

Probé todas las sugerencias anteriores, que no funcionaron para mí, pero encontré cómo corregir el error en mi caso.

Los siguientes pasos hicieron que el proyecto se compilara con éxito:

En el explorador de proyectos, haga clic con el botón derecho en el proyecto, seleccione "propiedades" En el árbol de la derecha, vaya a la ruta de compilación de Java. Seleccione la pestaña "bibliotecas". Haga clic en "Agregar biblioteca". Seleccione la biblioteca del sistema JRE. Haga clic en Siguiente. Seleccione el botón de opción JRE alternativo. Haga clic en "JRE instalado". Seleccione el JRE con la versión correcta. Haga clic en Appy y cierre. En la siguiente pantalla, haga clic en finalizar. En la ventana de propiedades, haga clic en Aplicar y cerrar. En el explorador de proyectos, haga clic con el botón derecho en su pom.xml y seleccione ejecutar como> compilación de maven En el cuadro de texto del objetivo, escriba "instalar". Haga clic en Ejecutar.

Esto hizo que el proyecto se construyera con éxito en mi caso.

FunkyFeudalFox
fuente
0

En Eclipse, acciones como importar proyectos de Maven o invocar "Fuentes de actualización" se ejecutan en la misma JVM en la que se ejecuta Eclipse. Si esa JVM proviene de JRE que no es parte de JDK, no habría un compilador de Java (el tools.jar).

Entonces, para lanzar Maven desde dentro de Eclipse, el JRE utilizado para el lanzamiento también debe provenir de JDK. De forma predeterminada, Eclipse registra el JRE en el que se inicia, pero esto se puede configurar en la página de preferencias "Ventana / Preferencias ... / Java / JRE instalados" como se mencionó anteriormente por Parthasarathy

Alternativamente, puede especificar compilerId en pom.xml, por lo que Maven no buscará JDK al compilar código Java:

 <plugin>
  <artifactid>maven-compiler-plugin</artifactid>
  <configuration>
    <compilerid>eclipse</compilerid>
  </configuration>
  <dependencies>
    <dependency>
      <groupid>org.codehaus.plexus</groupid>
      <artifactid>plexus-compiler-eclipse</artifactid>
      <version>xxxx</version>
    </dependency>
  </dependencies>
</plugin>
san1deep2set3hi
fuente
0

Me he encontrado con un problema similar y, como nadie publicó un enfoque similar al mío, aquí voy.

Navegue hasta la configuración de ejecución que desea iniciar.
Allí eligió la pestaña JRE. Ajuste el "Runtime JRE" allí, y estará listo para comenzar.

Vogel612
fuente
0

Puedo resolverlo siguiendo los siguientes pasos:

Haga clic con el botón derecho en el proyecto, seleccione Ruta de compilación -> Configurar ruta de compilación -> seleccione la pestaña Bibliotecas -> luego seleccione Biblioteca del sistema JRE [la versión que tiene para mí es JavaSE-1.7] -> haga clic en el botón Editar -> En la ventana Biblioteca del sistema JRE, seleccione Entorno de ejecución - En el menú desplegable, puede seleccionar el JDK enumerado para mí, su JavaSE-1.7 -> al lado de este, haga clic en el botón Entornos -> En la ventana Entornos de ejecución, debe seleccionar nuevamente su Java SE para mí, su JavaSE-1.7 -> simplemente selecciónelo , tendrá opciones en la pestaña JRE compatibles, así que seleccione el JDK que desea tener en mi caso es jdk1.7.0_25.


Haga clic en Aceptar y finalice el resto de las ventanas realizando la acción adecuada Aceptar / Finalizar.

Por último, ejecute Maven Clean y Maven Install.

Usted es maravilloso
fuente
Esta respuesta sería mejor si dijera qué aplicación está utilizando. :)
JakeRobb
0

Depende de la versión de Maven. Cuando instale una versión más reciente de Maven, este error no aparecerá. También puede agregar otro directorio con el archivo tools.jar lib / tools.jar; también resuelve este problema.

Bolek
fuente
0

Si estamos haciendo todos los pasos anteriores que pueden confundirse y nuestro problema solo falta tools.jre, simplemente agregue tools.jre mediante los siguientes pasos y el problema se resolverá.

Paso 1: en eclipse, vaya a Windows -> preferencias

Paso 2: Java -> JRE instalados (haga doble clic en él)

Paso 3: Haga clic en el botón Editar -> Haga clic en Agregar archivos JAR externos

Paso 4: Ahora seleccione la ruta tools.jar

ahora aplique cambios y funciona bien.

Aquí está la captura de pantalla

Ravindra
fuente
0

Aunque hay algunas respuestas anteriores que no son de Eclipse para esta pregunta que no mencionan a Eclipse, requieren cambios en la variable de ruta. Una alternativa es usar la opción de línea de comando, java.home, por ejemplo:

mvn package -Djava.home="C:\Program Files\Java\jdk1.8.0_161\jre"

Observe el \ jre al final: una necesidad sorprendente.

Colin McRae
fuente
0

Ninguna de las respuestas actuales me ayudó aquí. Obtuvimos algo como:

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:
    #.#.#:compile (default-compile) on project Streaming_Test: Compilation failure
[ERROR] Unable to locate the Javac Compiler in:
[ERROR] /opt/java/J7.0/../lib/tools.jar

Esto sucede porque la instalación de Java ha determinado que es una instalación de JRE. Se espera que haya cosas de JDK sobre el subdirectorio JRE, de ahí que ../liben la ruta. Nuestro tools.jarestá en $JAVA_HOME/lib/tools.jarno $JAVA_HOME/../lib/tools.jar.

Desafortunadamente, no tenemos la opción de instalar un JDK en nuestro sistema operativo (no preguntes), así que esa no era una opción. Solucioné el problema agregando lo siguiente al maven pom.xml:

  <plugin>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <configuration>
      <fork>true</fork>  <!-- not sure if this is also needed -->
      <executable>${JAVA_HOME}/bin/javac</executable>
      <!--        ^^^^^^^^^^^^^^^^^^^^^^ -->
    </configuration>
  </plugin>

Al apuntar el ejecutable al lugar correcto, esto al menos superó nuestras fallas de compilación.

gris
fuente
-1

Para Intellij Idea, configure todo de manera adecuada (de manera similar a esto):

JAVA_HOME = C:\Program Files\Java\jdk1.8.0_60
JRE_HOME = JAVA_HOME\jre

y no olvide reiniciar Idea . Este programa toma las variables al inicio, por lo que cualquier cambio en las variables del entorno mientras se ejecuta el programa no tendrá ningún efecto.

Václav Blažej
fuente