2016-04-30 10 views
4

QueryDSLをMongoDB(Spring Data提供)に統合しようとしています。JPAリポジトリも使用していますので、モデルモジュールとリポジトリモジュールでパッケージを分割しました。 Springデータ依存関係は、Spring Data Realease TrainバージョンHopper-SR1からのものです。 DSLバージョン3.7.2を照会してください。QueryDSLをMongoDBで使用する - java.lang.NoClassDefFoundError

 <!-- Spring Data --> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-mongodb</artifactId> 
     </dependency> 

     <!-- Query DSL--> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-apt</artifactId> 
      <scope>provided</scope> 
     </dependency> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-mongodb</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-jpa</artifactId> 
     </dependency> 
     <dependency> 
      <groupId>com.mysema.querydsl</groupId> 
      <artifactId>querydsl-core</artifactId> 
     </dependency> 

私のプラグインconfuguration

<build> 
    <plugins> 
     <plugin> 
      <groupId>com.mysema.maven</groupId> 
      <artifactId>apt-maven-plugin</artifactId> 
      <version>1.1.3</version> 
      <executions> 

       <!-- JPA Query DSL --> 
       <execution> 
        <id>jpa</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>process</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target/generated-sources/java</outputDirectory> 
         <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor> 
        </configuration> 
       </execution> 

       <!-- Mongo Query DSL --> 
       <execution> 
        <id>mongo</id> 
        <phase>generate-sources</phase> 
        <goals> 
         <goal>process</goal> 
        </goals> 
        <configuration> 
         <outputDirectory>target/generated-sources/java</outputDirectory> 
         <processor>org.springframework.data.mongodb.repository.support.MongoAnnotationProcessor 
         </processor> 
        </configuration> 
       </execution> 
      </executions> 
     </plugin> 
    </plugins> 
</build> 

私はmvn clean installによって私のモデルモジュールを構築していると私は以下のようなエラーになっています。私はプラグインでMongoDBプロセッサに問題があると思います。なぜなら、JPAの実行ビルドパスのみを使用するからです。

[ERROR] execute error 
java.util.concurrent.ExecutionException: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor 
    at java.util.concurrent.FutureTask.report(FutureTask.java:122) 
    at java.util.concurrent.FutureTask.get(FutureTask.java:192) 
    at com.mysema.maven.apt.AbstractProcessorMojo.execute(AbstractProcessorMojo.java:346) 
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:101) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153) 
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84) 
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183) 
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161) 
    at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:320) 
    at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156) 
    at org.apache.maven.cli.MavenCli.execute(MavenCli.java:537) 
    at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196) 
    at org.apache.maven.cli.MavenCli.main(MavenCli.java:141) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409) 
    at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352) 
    at org.codehaus.classworlds.Launcher.main(Launcher.java:47) 
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 
    at java.lang.reflect.Method.invoke(Method.java:498) 
    at com.intellij.rt.execution.application.AppMain.main(AppMain.java:144) 
Caused by: java.lang.RuntimeException: java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor 
    at com.sun.tools.javac.main.Main.compile(Main.java:553) 
    at com.sun.tools.javac.api.JavacTaskImpl.doCall(JavacTaskImpl.java:129) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:138) 
    at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:67) 
    at java.util.concurrent.FutureTask.run(FutureTask.java:266) 
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
    at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: com/querydsl/apt/AbstractQuerydslProcessor 
    at java.lang.ClassLoader.defineClass1(Native Method) 
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763) 
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 
    at java.net.URLClassLoader.access$100(URLClassLoader.java:73) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:368) 
    at java.net.URLClassLoader$1.run(URLClassLoader.java:362) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:361) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$NameProcessIterator.hasNext(JavacProcessingEnvironment.java:409) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$DiscoveredProcessors$ProcessorStateIterator.hasNext(JavacProcessingEnvironment.java:609) 
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.atLeastOneProcessor(JavacProcessingEnvironment.java:447) 
    at com.sun.tools.javac.main.JavaCompiler.initProcessAnnotations(JavaCompiler.java:1050) 
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:852) 
    at com.sun.tools.javac.main.Main.compile(Main.java:523) 
    ... 7 more 
Caused by: java.lang.ClassNotFoundException: com.querydsl.apt.AbstractQuerydslProcessor 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 
    ... 24 more 

念のために、私は私の親pom.xml

<dependencyManagement> 
    <dependencies> 
     <dependency> 
      <groupId>org.springframework</groupId> 
      <artifactId>spring-framework-bom</artifactId> 
      <version>${spring.version}</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 

     <dependency> 
      <groupId>org.springframework.data</groupId> 
      <artifactId>spring-data-releasetrain</artifactId> 
      <version>${spring-data-bom.version}</version> 
      <scope>import</scope> 
      <type>pom</type> 
     </dependency> 
     </dependencies> 
</dependencyManagement> 

答えて

6

GA release announcementおよびrelease train wikiに示されているように、Spring Data HopperはQuerydsl 4にアップグレードされます。したがって、アプリケーションもアップグレードする必要があります。

0

に持って、この依存関係は、私はこの問題はspring-data-mongodbの最新バージョンであると思います。私は同じ問題を抱えていましたが、1.8.4-RELEASEバージョンで解決しました。

0

querydsl maven groupIdをcom.querydslで置き換えてください。バージョン4.0.0以上を使用してください。

関連する問題