web-dev-qa-db-fra.com

Problème Eclipse avec Maven build et JDK lors de la génération de classes Q dans Querydsl

Quand j'ajoute ce code ci-dessous dans mon pom.xml pour supporter 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>

J'ai eu cette erreur lors de la construction avec Eclipse. Je pense qu'il a une relation avec Classpath et 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>


Informaitons supplémentaires : 

enter image description here

Mon maven installation

enter image description here

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

24
Youssef

SOLUTION 1

Suite à cela link

"Le plug-in Maven APT a un problème connu qui l'empêche d'utiliser Directement à partir d'Eclipse. Les utilisateurs d'Eclipse doivent créer la requête Querydsl .__ manuellement à l'aide de la commande mvn generate-sources à la commande Invite . "

Donc, j'exécute la ligne de commande mvn generate-sources dans mon projet floder avec la console cmd et j'ai obtenu mes Qclasses générées.

SOLUTION 2 from @ informatik01 comment

nous pouvons explicitement spécifier la JVM dans le Eclipse.ini comme ceci:

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

-vmargs
...

L'option -vm doit exister avant l'option -vmargs et pour plus d'informations, lisez le commentaire @ informatik01 ci-dessous.

45
Youssef

Vous pouvez essayer avec ceci dans le 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>

Et voir si ça change quelque chose. Il faut forcer tools.jar dans le chemin de construction.


Modifier. puisque cela n'a pas aidé, essayez de spécifier

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

dans Eclipse.ini (les lignes séparées sont importantes), comme expliqué dans ce fil .

5
eis

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

ajoutez le plugin, vous allez le résoudre

1
chenyayi

Ce problème me arrivait car, comme mentionné ci-dessus, Eclipse lui-même passait par le JRE au lieu du JDK.

Je l'ai résolu en ajoutant % Java_HOME%\bin au début de ma variable d'environnement PATH.

J'ai compris ce que JVM Eclipse utilisait en lisant: Découvrez sur quoi JVM Eclipse est exécuté

1
River

J'avais fait tout ce qui était suggéré ci-dessus mais en vain. Enfin, comme je configurais un nouvel ordinateur, je me suis rendu compte que je n'avais pas de variable Java_HOME configurée.

Donc, tout ce que j'ai fait est d'ajouter la variable Java_HOME à mes variables système et de la définir comme chemin JDK: C:\Program Files\Java\jdk1.8.0_172

Et voila - mvn generate-resources a recommencé à fonctionner.

0
RVP

N'oubliez pas de vérifier les paramètres du Environnement d'exécution dans vos paramètres de projet Eclipse: Chemin de construction du projet -> Bibliothèques -> Bibliothèque système JRE .

Si cela n’est pas correct (par exemple, jre ), réglez-le sur un jdk one.

Dans mon cas, cela a résolu le problème ("Vous devez exécuter build avec JDK ou avoir tools.jar sur le chemin d'accès aux classes." A disparu).

Puis les env. La quatrième ligne du journal d'exécution Maven est modifiée (par exemple). 

...
Java home: C:\Program Files\Java\jre1.8.0_66
....

à 

 ...
 Java home: C:\Program Files\Java\jdk1.8.0_66\jre
 ...

J'espère que cela t'aides.

0
Hartmut P.

Si vous construisez par Shell commond comme mvn install. Exécutez ensuite cette commande dans la fenêtre Shell ou cmd: echo $ CLASSPATH. Cette commande affiche votre chemin de classe.

Si vous utilisez Eclipse, ouvrez Fenêtre> Préférences> Java> JRE installés, assurez-vous que vos JRE installés sont situés à l'emplacement racine de jdk. Pour moi, c'est C:\Java\jdk1.7.0_51

J'espère que ça aide.

0
user3313007

Essayez de mettre à jour le JDK dans Eclipse comme ci-dessous:

mettre la JRE en

regardez le chemin ci-dessous - ayant program files (mais dans votre chemin mentionné, il n'y a pas program files dans votre chemin, généralement Java et tous les programmes sont installés dans program files alors assurez-vous que ce chemin est)

 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

alos assurez-vous que Java_HOME path est correctement défini sur JDK\bin correctement (sans espace ni tout dans ce chemin)

Essayez de copier votre JDK vers un autre emplacement et mettez à jour votre Java_HOME avec ce nouvel emplacement.

laissez-moi savoir pour d'autres questions.

0
Karibasappa G C