Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Eclipse issue with Maven build and JDK when generating Qclasses in Querydsl

Tags:

When I add this code below in my pom.xml to support 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> 

I got this error when building with Eclipse. I think it has relation with classpath and JDK jars

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> 


Extra info :

enter image description here

My maven Installation

enter image description here

JAVA_HOME : C:\Program Files\Java\jdk1.7.0_45
PATH : %JAVA_HOME%\bin;

like image 242
Hayi Avatar asked Jun 30 '14 02:06

Hayi


2 Answers

SOLUTION 1

Following this link

"The Maven APT plugin has a known issue that prevents its usage directly from Eclipse. Eclipse users must create the Querydsl query types manually by running the command mvn generate-sources at command prompt."

So i execute the command line mvn generate-sources in my project floder with console cmd and i got my Qclasses generated.

SOLUTION 2 from @informatik01 comment

we can explicitly specified JVM in the eclipse.ini like that :

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

The -vm option must occur before the -vmargs option and for more info read @informatik01 comment below.

like image 172
Hayi Avatar answered Oct 14 '22 14:10

Hayi


You could try with this in the 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> 

And see if it changes anything. It should force tools.jar in the build path.


Edit. since that didn't help, try specifying

-vm  D:/work/Java/jdk1.6.0_13/bin/javaw.exe 

in eclipse.ini (separate lines are important), as explained in this thread.

like image 42
eis Avatar answered Oct 14 '22 15:10

eis