web-dev-qa-db-ja.com

QuerydslでQclassを生成するときのMavenビルドとJDKのEclipseの問題

Querydslをサポートするためにpom.xmlにこのコードを追加するとき

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

Eclipseでビルドするとこのエラーが発生しました。クラスパスやJDK jarと関係があると思います

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>


追加情報:

enter image description here

私のMavenのインストール

enter image description here

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

24
Youssef

ソリューション1

これに続いて リンク

「Maven APTプラグインには、Eclipseから直接使用できない既知の問題があります。Eclipseユーザーは、コマンドプロンプトでmvn generate-sourcesコマンドを実行してQuerydslクエリタイプを手動で作成する必要があります。」

それで、プロジェクトfloderでコマンドラインmvn generate-sourcesをコンソールcmdで実行し、Qclassesを生成しました。

SOLUTION 2from @ informatik01コメント

明示的に 指定されたJVMEclipse.iniのように:

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

-vmargs
...

-vmオプションは-vmargsオプションの前に指定する必要があります。詳細については、以下の@ informatik01コメントを参照してください。

46
Youssef

あなたは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>

そして、それが何かを変更するかどうかを確認します。ビルドパスにtools.jarを強制する必要があります。


編集。それは助けにならなかったので、指定してみてください

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

このスレッド で説明されているように、Eclipse.iniで(個別の行が重要です)。

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>

プラグインを追加すると、解決します

1
chenyayi

やっとやった! thisthis のような非常に多くのオプションを試しましたが、運はありません。それから私はこれを読んだ コメント それは私の命を救った、本当に、ありがとう!このソリューションとその動作を突然フォローします!私の場合は回答を受け入れる必要があります。

Mvn clean install – @julio mulcue burbanoを実行した後、tools.jarをC:\ Program Files\Java\jdk1.8.0_151\libからC:\ Program Files\Java\jre1.8.0_151\libにコピーしました

1
claraind

上記のように、Eclipse自体はJDKではなくJREを介して実行されていたため、この問題は私に起こっていました。

PATH環境変数の先頭に%Java_HOME%\ binを追加して解決しました。

読み通すことで、JVM Eclipseが使用しているものを見つけました: JVM Eclipseが実行されているものを見つける

1
River

上記の提案はすべて行いましたが、役に立ちませんでした。最後に、新しいコンピューターをセットアップしていたので、Java_HOME変数のセットアップ。

したがって、私がしたことはJava_HOME変数をシステム変数に設定し、JDKパスに設定します:C:\Program Files\Java\jdk1.8.0_172

そして出来上がり-mvn generate-resourcesは再び働き始めました。

0
RVP

Eclipseプロジェクト設定で実行環境の設定を確認することを忘れないでください:プロジェクトビルドパス->ライブラリ-> JREシステムライブラリ

これが間違っている場合(例jre)、これをjdkに切り替えます。

私の場合、これで問題は解決しました(「JDKでビルドを実行するか、クラスパスにtools.jarが必要です。」が消えました)。

その後、約。 Maven実行ログの4行目の変更(例)

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

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

お役に立てれば。

0
Hartmut P.

Mvn installのようなシェルcommondでビルドする場合。次に、シェルまたはコマンドウィンドウで次のコマンドを実行します:echo $ CLASSPATH。このコマンドは、クラスパスを表示します。

Eclipseを使用している場合は、[ウィンドウ]> [設定]> Java>インストール済みJREを開き、インストール済みJREがjdkルートの場所であることを確認します。私にとってはC:\ Java\jdk1.7.0_51です。

それが役に立てば幸い。

0
user3313007

以下のようにEclipseでJDKを更新してみてください。

jREを設定します

以下のパスを見てください-program filesがあります(ただし、前述のパスではprogram filesがパスにありません。通常はJavaで、すべてのプログラムはprogram filesそのパスを確認してください)

 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は、Java_HOMEパスがJDK\binに適切に設定されていることを確認します(そのパスにスペースやすべてを含めないでください)

JDKを別の場所にコピーして、Java_HOMEをその新しい場所に更新してみてください。

その他の問題についてお知らせください。

0
Karibasappa G C