java eclipse maven querydsl

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.