java - Problema de Eclipse con Maven build y JDK al generar Qclasses en Querydsl
(8)
Cuando agrego este código a continuación en mi pom.xml
para admitir Querydsl
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0.6</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
Recibí este error al construir con Eclipse. Creo que tiene relación con classpath y jars JDK.
You need to run build with JDK or have tools.jar on the classpath.
If this occures during eclipse build make sure you run eclipse under JDK as well
(com.mysema.maven:apt-maven-plugin:1.0.6:process:default:generate-sources)
.classpath :
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
<classpathentry kind="src" output="target/classes" path="src">
<attributes>
<attribute name="optional" value="true"/>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jst.server.core.container/org.eclipse.jst.server.tomcat.runtimeTarget/Apache Tomcat v8.0">
<attributes>
<attribute name="owner.project.facets" value="jst.web"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7">
<attributes>
<attribute name="maven.pomderived" value="true"/>
</attributes>
</classpathentry>
<classpathentry kind="con" path="org.eclipse.m2e.MAVEN2_CLASSPATH_CONTAINER">
<attributes>
<attribute name="maven.pomderived" value="true"/>
<attribute name="org.eclipse.jst.component.dependency" value="/WEB-INF/lib"/>
</attributes>
</classpathentry>
<classpathentry kind="output" path="target/classes"/>
</classpath>
Información extra :
Mi instalacion maven
JAVA_HOME: C: / Archivos de programa / Java / jdk1.7.0_45
PATH:% JAVA_HOME% / bin;
Este problema me estaba ocurriendo porque, como se mencionó anteriormente, Eclipse estaba ejecutando el JRE en lugar del JDK.
Lo resolví agregando % JAVA_HOME% / bin al frente de mi variable de entorno PATH.
Me di cuenta de lo que estaba utilizando el eclipse de JVM leyendo: Descubra qué JVM Eclipse se está ejecutando en
Había hecho todo lo sugerido anteriormente, pero fue en vano. Finalmente, como estaba configurando una computadora nueva, me di cuenta de que no tenía configurada una variable JAVA_HOME
.
Así que todo lo que hice fue agregar la variable JAVA_HOME
a mis variables del sistema y establecerla en una ruta JDK: C:/Program Files/Java/jdk1.8.0_172
Y voila - mvn generate-resources
comenzó a trabajar de nuevo.
Intente actualizar el JDK en Eclipse como se muestra a continuación:
configurar el JRE en
mire la ruta a continuación: tiene program files
(pero en su ruta mencionada no tiene program files
en su ruta, generalmente java y todos los programas se instalan en los program files
así que asegúrese de esa ruta)
Window->Preferences...->Java->Installed JREs:
JRE type: Standard VM JRE
Name: jdk1.6.0_18
JRE home directory: C:/Program Files (x86)/Java/jdk1.6.0_18
También asegúrese de JAVA_HOME
ruta JAVA_HOME
esté configurada correctamente en JDK/bin
correctamente (sin espacios y todo en esa ruta)
Intente copiar su JDK
en una ubicación diferente y actualice su JAVA_HOME
con esa nueva ubicación.
Déjame saber por cualquier otro problema.
No olvide verificar la configuración del Entorno de ejecución en la Configuración del proyecto de Eclipse: Ruta de compilación del proyecto -> Bibliotecas -> Biblioteca del sistema JRE .
Si esto es incorrecto (por ejemplo, jre ), cambia esto a uno jdk .
En mi caso, esto resolvió el problema ("necesitas ejecutar build con JDK o tener tools.jar en el classpath" desaparecido).
Entonces el aprox. La cuarta línea en el registro de ejecución de Maven cambia de (por ejemplo)
...
Java home: C:/Program Files/Java/jre1.8.0_66
....
a
...
Java home: C:/Program Files/Java/jdk1.8.0_66/jre
...
Espero que esto ayude.
Podrías probar con esto en el pom:
<plugin>
<groupId>com.mysema.maven</groupId>
<artifactId>apt-maven-plugin</artifactId>
<version>1.0.6</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
<dependencies>
<dependency>
<groupId>com.sun</groupId>
<artifactId>tools</artifactId>
<version>1.7</version>
<scope>system</scope>
<systemPath>${java.home}/../lib/tools.jar</systemPath>
</dependency>
</dependencies>
</plugin>
Y a ver si cambia algo. Debería forzar tools.jar en la ruta de compilación.
Editar. ya que eso no ayudó, intente especificar
-vm
D:/work/Java/jdk1.6.0_13/bin/javaw.exe
en eclipse.ini (las líneas separadas son importantes), como se explica en este hilo .
Si construyes por shell commond como mvn install. Luego ejecute este comando en la ventana shell o cmd: echo $ CLASSPATH. Este comando muestra su classpath.
Si está utilizando Eclipse, abra Ventana> Preferencias> Java> JRE instalados, asegúrese de que sus JRE instalados estén en la ubicación raíz de jdk. Para mí, es C: / Java / jdk1.7.0_51
Espero eso ayude.
SOLUCIÓN 1
Siguiendo este link
"El complemento APT de Maven tiene un problema conocido que impide su uso directamente desde Eclipse. Los usuarios de Eclipse deben crear los tipos de consulta Querydsl manualmente ejecutando el comando mvn generate-sources en el símbolo del sistema".
Así que ejecuto la línea de comandos mvn generate-sources
en mi proyecto floder con consola cmd
y obtuve mis Qclasses generadas.
SOLUCIÓN 2 del comentario @ informatik01
Podemos especificar explícitamente JVM en el eclipse.ini
así:
-vm
C:/Program Files/Java/jdk1.7.0_45/bin/javaw.exe
-vmargs
...
La opción -vm
debe aparecer antes de la opción -vmargs
y, para obtener más información, lea el comentario @ informatik01 a continuación.
<groupId>com.mysema.maven</groupId>
<artifactId>maven-apt-plugin</artifactId>
<version>1.0.6</version>
<executions>
<execution>
<goals>
<goal>process</goal>
</goals>
<configuration>
<outputDirectory>target/generated-sources/java</outputDirectory>
<processor>com.mysema.query.apt.jpa.JAPAnnotationProcessor</processor>
</configuration>
</execution>
</executions>
</plugin>
Agrega el plugin, lo resolverás.