Error de compilación de Maven: "No se puede ubicar el compilador de Javac en: problema jre o jdk"

112

Tengo mi JAVA_HOME configurado en:

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

Después de ejecutar maven install, recibo este mensaje de Eclipse :

Razón:

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.

Estoy seguro de que esta es la parte complicada

Asegúrese de estar utilizando JDK 1.4 o superior y no un JRE

Cuando ejecuto la configuración, se establece en JRE6. ¿Cómo lo cambio a JDK 1.6 que ya he instalado?

Incluso intenté modificar el complemento:

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

Aún así, obtengo el mismo error.

Utilizo el complemento Eclipse Maven. ¿Cómo puedo cambiar de JRE a JDK en Eclipse?

Gandalf StormCrow
fuente
¿Ha verificado dos veces con el comando de la línea de setcomandos para asegurarse de que JAVA_HOME esté configurado en lo que cree que es?
Powerlord
Estoy usando Java a diario ... todo funciona bien aquí está: 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
Establezca <fork> verdadero </fork> cuando configure el ejecutable.
Robin
Eso en realidad no nos dice qué instalación de Java se java -versionestá ejecutando; podría ser la instalación de JRE o JDK. javac -versionsería un poco más útil. Sin embargo, incluso entonces, si PATH es correcto y JAVA_HOME es incorrecto, estos se mostrarán como cabría esperar.
Powerlord
1
Además, el ejecutable debe ser ... \ bin \ javac, debe especificar el ejecutable real, no solo la ruta.
Robin

Respuestas:

141

Puede intentar actualizar el JDK que usa Eclipse, de la siguiente manera:

Agregue y configure el JRE en el menú VentanaPreferencias ...JavaJRE instalados :

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

Si este no es el caso, es posible que los corchetes y los espacios en la ruta JAVA_HOME estén causando problemas. Intente copiar su JDK en una ubicación diferente y actualizar su JAVA_HOME.

lucrussell
fuente
1
De hecho, es la primera parte de su pregunta, JAVA_HOME está bien
Gandalf StormCrow
47
Para mí, se necesitaba un paso adicional: ir a las propiedades de dicho proyecto-> java build path-> libraries-> seleccione "JRE System Library", haga clic en Editar y seleccione "Workspace default JRE"
maayank
1
no fue suficiente para mi, tuve que editar eclipse.ini. Creo que hay un error.
ruhsuzbaykus
Me funcionó solo cuando verifiqué el jdk apropiado en el Entorno de ejecución -> JRE compatibles.
Vedran
9
Además, si ejecuta Maven desde una configuración de ejecución de eclipse que creó antes de estos cambios de configuración, recuerde ir a la ventana Ejecutar configuración / pestaña JRE y seleccionar el JRE correcto. De lo contrario, podría estar utilizando el antiguo JRE incorrecto incluso después de actualizar su eclipse y la configuración del proyecto al nuevo.
Diana
20

El archivo eclipse.ini necesita que el vmargumento apunte a su ubicación JDK.

Edite el eclipse.iniarchivo para que apunte a su casa JDK, algo como sigue:

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

Esto asegura que Eclipse se ejecutará desde el JDK y no desde cualquier JRE predeterminado en su máquina.

Sai Hegde
fuente
5
Esto solucionó mi problema. Al investigar en la web, parece que Maven usa JAVA_HOME, pero el complemento Maven no sabe nada sobre JAVA_HOME y, en su lugar, utiliza la máquina virtual utilizada para iniciar Eclipse.
jnosek
13

Intenta:

Vaya a Preferences/Java/Installed JREsy agregue uno para la ubicación "C:\Program Files\Java\jdk1.6.0_27\jreo algo así.

Quita el de C:\Program Files\Java\jre6

Como puede ver, la ruta C:\Program Files\Java\jre6\..\lib\tools.jarsolo tiene sentido si la primera parte (hasta la / ..) se reemplaza por C:\Program Files\Java\jdk1.6.0_27\jre.

cuocdoibian1971
fuente
10

Establecer fork en verdadero resolvió el problema para mí.

<configuration>
    <fork>true</fork>
    <source>1.6</source>
    <target>1.6</target>
</configuration>
Prash
fuente
9

¡Tuve exactamente el mismo problema! Había estado buscando y buscando durante días porque todo el balbuceo sobre "poner -vm c: \ program files \ java \ jdkxxxxx \ bin" en el inicio como argumento para un atajo no ayudó en absoluto .

(¿Sueno frustrado? Créame, ¡eso es quedarse corto! ¡Estoy simplemente furioso porque perdí una semana tratando de hacer que Maven sea confiable!)

Tuve un comportamiento muy impredecible. A veces se compilaba y otras no. Si hiciera unmaven clean , no pudo encontrar el compilador y falló. Si luego cambié algo en la ruta de construcción, ¡¡de repente funcionó de nuevo !!

Hasta que fui al menú VentanaPreferenciasJavaJRE instalados . Agregué un nuevo JRE usando la ubicación del JDK y luego eliminé el JRE. ¡De repente, Maven se quedó estable!

¿Quizás valga la pena poner esto en letras con un tamaño de fuente de 30 aproximadamente en el manual de Apache?

Con el debido respeto, ¡esto es simplemente indignante para la comunidad Java! ¡No puedo imaginar cuántos días perdieron todas estas personas tratando de resolver sus problemas de este tipo! No puedo imaginar que esto se publique como una versión final. Personalmente, ni siquiera me atrevería a lanzar algo así con el nombre de software beta ...

Saludos cordiales de cualquier manera ... Después de una semana de manipulación, finalmente puedo comenzar a desarrollarme. Espero que mi jefe no se entere de esto. Me costó un gran esfuerzo convencerlo de que no usara .NET y ya lo siento.

Lorenzo
fuente
1
En
resumen, úselo
Es más un eclipse ... problema m2e ... Tengo el mismo problema y los otros IDE (netbeans e IDEA) funcionan perfectamente.
joshua
3

Tengo el mismo problema al usar Ejecutar como -> Instalación de Maven en Eclipse. JAVA_HOME y eclipse.ini estaban bien y apuntaban a mi último JDK. Pero m2clipse usó JRE. ¡Usar mvn install fuera de Eclipse funcionó bien!

En mi caso, resolví el problema de la siguiente manera:

  1. Navegar en Eclipse: menú VentanaPreferenciasJavaJRE instalados
  2. Había dos entradas inactivas para JRE y JDK. El activo fue el último JDK instalado. Elimine todas las entradas excepto la que Maven debería usar.

Creo que Maven no tiene en cuenta cuál está activo ...

Markus
fuente
3

Acabo de instalar Maven 3.0.4, ajuste M2_HOME, M2y JAVA_HOMEen consecuencia. Luego ejecuté los siguientes comandos:

mvn archetype:generate....

mvn compile

Me fallado mensaje tal como: maven unable to locate javac compiler.

En mi computadora, tengo JRE instalado por defecto en C: \ archivos de programa \ java \ jre.1.6 . Y tengo el otro C: \ java \ jdk1.6 y lo JAVA_HOMEconfiguro en este C: \ java \ jdk1.6 .

No vi nada malo en mi entorno. Después de buscar, decidí investigar mvn.bat, hice eco de %JAVA_HOME%cada paso y se mostró correctamente como C:\java\jdk1.6, pero cuando ejecuté el comando mvn --version, mostró el inicio de Java: C: \ program files \ java \ jre1.1.6 .

Finalmente, descubrí que solo necesito configurar -Djava.home=c:\java\jdk1.6como en el comando a continuación, y funcionando bien ahora:

%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: Esto es para mvnla línea de comandos y no para Eclipse.

smngo
fuente
Oye, no necesitas ir y explicar siempre cada paso que hiciste. Consulte Cómo responder al punto .
mtk
Eso parece un truco (pero bueno ... ¡si funciona para usted!), Pero es interesante que la línea de comandos de Maven recoja el inicio de Java incorrecto; este es nuestro problema actual.
plasma147
2

Resolví el problema cambiando la ubicación del JRE instalado al directorio presente en el propio JDK. Establecer el valor adecuado deJAVA_HOME la variable entorno no resolvió el problema.

En mi caso, hay dos directorios

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

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

Inicialmente lo configuré C:\Program Files\Java\jre7como JRE instalado en Eclipse y recibía el mismo error en el caso de Maven (Ant funcionaba bien).

Al cambiar el JRE instalado a JRE C:\Program Files\Java\jdk1.7.0_03\jre7instalado en Eclipse, el problema se resuelve.

Nikhil
fuente
2

No olvide que si está ejecutando su proyecto desde una configuración particular de Eclipse, debe cambiar el tiempo de ejecución de Java dentro de 'Ejecutar configuraciones' -> 'Su configuración de maven' -> 'pestaña JRE' después de agregar el JDK correcto a sus preferencias de Eclipse.

Iván Fernández
fuente
2

Parece que Maven está usando el JRE, no el JDK. ¿Quizás instaló Maven antes de instalar el JDK?

Compruebe los archivos de configuración . Hay tres en total, sistema, usuario y proyecto. Lo más probable es que esté en la configuración de instalación ($ M2_HOME / conf / settings.xml) o, posiblemente, en la configuración por usuario ($ {user.dir} /. M2 / settings.xml).

Devon_C_Miller
fuente
2

Solo configuración de Eclipse

Realice los siguientes pasos:

  1. Haga clic derecho en Propiedades del proyecto Eclipse

  2. Ruta de compilación Java → Bibliotecas

  3. Seleccione Biblioteca del sistema JRE → Haga clic en el Editbotón

  4. Haga clic en el botón "JRE instalados ..."

  5. Edite JRE como: Establecer JRE Home = JAVA_HOME o JAVA_HOME \ jre

Captura de pantalla:

Ingrese la descripción de la imagen aquí

Parthasarathy B
fuente
Esto funcionó para mí, gracias. Cambié el inicio de JRE a la carpeta JDK.
LadyBernkastel
1

Haga clic derecho en el menú ProyectoPropiedadesRuta de compilación de Java .

Seleccione la ruta del sistema JRE → Editar . Seleccione el JRE predeterminado del espacio de trabajo y apúntelo a JDK> 1.4.

como su
fuente
1

Utilice el menú VentanaPreferenciasJavaJRE instaladosEntornos de ejecución -> haga clic en la casilla de verificación del lado derecho.

Gambótico
fuente
1

La solucion es simple. A veces, Eclipse WindowsPreferenciasJavaJRE instalados apuntando a C:\Program files\Java\jre.

Cuando lo cambié a C:\Program files\Java\JDK 6.0\jreestá trabajado al 100%.

santhosh
fuente
1

Como lo mencionaron varios otros, la Ventana de Eclipse → Preferencias ...JavaLos JRE instalados deben apuntar al JDK que instaló, no al JRE. Solo entonces puede encontrar la ../libcarpeta mencionada en el mensaje de error.

Incluso con esto, el problema puede volver a aparecer. Mi salida en Eclipse v4.2 (Juno) es hacer un menú MavenActualizar proyecto ... luego de lo cual el problema desaparece.

Sospecho que la razón es que algunos de los archivos generados por Eclipse (.classpath, .project, .preferences) están en Subversion para el proyecto en el que tengo estos problemas. Por lo tanto, una actualización de SVN presenta el problema y una actualización de configuración de Maven en Eclipse lo resuelve nuevamente.

Solución real: omita los archivos .files generados por Eclipse del control de versiones y deje que el complemento Maven Eclipse maneje la configuración del proyecto. (Se aceptan sugerencias / consejos adicionales) .

avandeursen
fuente
1

En mi caso, en el menú de Eclipse EjecutarConfiguraciones de depuración .

En la pestaña JRE, la selección del JDK en lugar del JRE resolvió el problema.

Vathsala Weerasinghe
fuente
1

Tuve el mismo problema en Amazon Linux. Resulta que tuve que instalar la versión de desarrollador del JDK:

sudo yum -y install java-1.7.0-openjdk-devel
Evan Siroky
fuente
1

Vaya al menú de Eclipse VentanaPreferencias ...JavaLos JRE instalados deben apuntar al JDK que instaló, no al JRE.

Sudipto
fuente
Pero esto también está en numerosas respuestas anteriores.
Peter Mortensen
0

También puede asegurarse de que Eclipse tenga todos los cambios actualizados. Para hacer esto, haga clic derecho en su proyecto y luego presione el elemento de menú "Actualizar".

GregNash
fuente
0

Muchas otras respuestas le dicen que apunte su Eclipse a un JDK en lugar de un JRE.

Aquí hay otra respuesta con pasos más específicos / claros [de los que he visto en cualquier respuesta aquí] sobre cómo hacer eso: ¿Cómo se instala JDK?

Eso es lo que me solucionó para este mismo problema.

cellepo
fuente
0

Asegúrese de que "-vm" en su eclipse.ini esté en dos líneas separadas, es decir:

-vm
C:\Program Files\Java\jdk1.6.0_06
Kevin Van Dyck
fuente
0

Supongo que la ubicación del compilador está definida en un POM para que el complemento del compilador esté en la ubicación de JRE que se muestra, en lugar de la ubicación de JDK a la que apunta JAVA_HOME.

Robin
fuente
@Robin ¿Dónde debería buscar eso exactamente? el pom se ve bien para mí<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
Si no hay un <executable> definido, entonces esto no es lo que está causando su problema, a menos que el pom que está viendo herede de un pom padre que lo tiene definido.
Robin
Al definir el ejecutable, también debe establecer <fork> en verdadero.
Robin
0

Debe indicar JAVA_HOMEen mvn.ini(está en la carpeta Maven /bin) y su problema desaparecerá.

Javicha
fuente
0

Si configura JAVA_HOME y el problema persiste, intente lo siguiente.

(Tuve el mismo problema, en una PC recién instalada).

Suponiendo que está utilizando Eclipse.

  • Ventana abierta → PreferenciasJavaJre instalados . Elimine todo lo que tenga allí, agregue lo que desee que desee usar (¡JDK, no JRE!)
  • En la misma ventana, abra maven: instalaciones, agregue la instalación de Maven que descargó y extrajo en algún lugar. ( No utilice la instalación integrada de Maven. Tiene algunos errores conocidos).

Eso es todo. Su proyecto no sufrirá tales problemas.

Marcell
fuente
0

Tuve el mismo error, debido a la versión JUnit . Tenía tres 3.8.1 y he cambiado a 4.8.1.

Entonces la solución es:

Tienes que ir al 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
0

Cambié la configuración de maven-compiler-plugin para agregar executabley forkcon valor verdadero.

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

Funcionó para mí.

Soumyajit Swain
fuente
0

Hazlo Echo %JAVA_HOME%y luegomvn --version .

La ruta de JRE debe ser la misma ... luego vaya al menú VentanaPreferenciasJavaLa ubicación de JRE instalado debe ser la misma que la que Java_Homese muestra.

vandana
fuente
0

Vaya al cuadro de diálogo Propiedades y haga clic derecho en el proyecto.

En Recursos vinculados , agregue una nueva ruta llamada JAVA_HOME e ingrese su ubicación JDK, algo así como "C: \ Archivos de programa \ Java \ jdk1.8.0_73".

¡¡Eso es todo!!

Macu Gómez
fuente
No creo que deba agregar ninguna variable ... solo cambie la configuración de JDK en Ejecutar seetings al espacio de trabajo JDK
Phani
0

La solución a este problema es muy simple ...

Si no tiene el archivo de compilación de Ant, generelo. En Eclipse puede crear fácilmente un archivo Ant .

Consulte el enlace para crear un archivo de compilación Ant [ http://www.codejava.net/ides/eclipse/how-to-create-ant-build-file-for-existing-java-project-in-eclipse] .

Ahora siga los pasos dados:

1) Agregue su archivo de compilación Ant en la vista Ant que está en la ventana de visualización.

2) haga clic derecho en su archivo de compilación Ant y seleccione Ejecutar como y la segunda opción en esa "Compilación Ant".

3) Ahora se abrirá un cuadro de diálogo con varias opciones y pestañas.

4) Seleccione la pestaña JRE .

5) Verá tres botones de radio y tendrán JRE o JDK seleccionado como una opción.

6) Mire cuidadosamente si las opciones del botón de radio tienen JRE como seleccionado y luego cámbielo a JDK .

7) Haga clic en Aplicar.

Eso es...!!!

Nishat Lakhani
fuente