Java 自3.1.0以来,使用maven生成QueryDSL类失败

Java 自3.1.0以来,使用maven生成QueryDSL类失败,java,maven,querydsl,Java,Maven,Querydsl,生成QueryDSL的Q时。。。使用apt maven插件初始化maven构建失败,出现SimpleSerializerConfig中的NullPointerException——但仅适用于3.1.0以后的maven版本 我们已经尝试过在maven构建中进行调试,但没有得出任何结论 maven配置如下所示: <plugin> <groupId>com.mysema.maven</groupId> <artifactId>apt-ma

生成QueryDSL的Q时。。。使用apt maven插件初始化maven构建失败,出现
SimpleSerializerConfig
中的
NullPointerException
——但仅适用于3.1.0以后的maven版本

我们已经尝试过在maven构建中进行调试,但没有得出任何结论

maven配置如下所示:

<plugin>
    <groupId>com.mysema.maven</groupId>
    <artifactId>apt-maven-plugin</artifactId>
    <version>1.1.1</version>
    <executions>
        <execution>
            <goals>
                <goal>process</goal>
            </goals>
            <configuration>
                <outputDirectory>target/generated-sources/java</outputDirectory>
                <processor>com.mysema.query.apt.jpa.JPAAnnotationProcessor</processor>
                <logOnlyOnError>true</logOnlyOnError>
            </configuration>
        </execution>
    </executions>
    <dependencies>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-apt</artifactId>
            <version>${querydsl.version}</version>
        </dependency>
        <dependency>
            <groupId>com.mysema.querydsl</groupId>
            <artifactId>querydsl-jpa</artifactId>
            <classifier>apt</classifier>
            <version>${querydsl.version}</version>
        </dependency>
    </dependencies>
</plugin>

此异常通常发生在生成中存在依赖项冲突时。尝试禁用apt执行,看看构建中是否存在其他问题。

我们也遇到了这个问题。我们注意到原因与注释直接相关。我们为一个类添加了一个注释,Maven能够解析这个类,但mysema不能。我们明确地将编译依赖项添加到了有问题的pom中,一切都解决了。

只是分享了我遇到类似错误的经验,但如果其他人遇到这种错误,原因不同

在src/main/java中将测试范围的依赖项中的注释添加到类之后,出现了相同的错误。Eclipse没有抱怨,因为m2eclipse不太擅长区分编译和测试范围的依赖项,只会将每个依赖项添加到项目类路径中,而不考虑范围

要查看实际的编译错误,我必须执行以下步骤:

  • 让m2e在Eclipse中生成QueryDsl类
  • 从项目的POM停用注释处理
  • 运行
    mvn compile
    (无
    clean
    ,不删除步骤1中生成的类)

  • 您找到解决方案了吗?您的回答为我们指出了正确的方向:添加依赖项有帮助-我们不使用spring data jpa,但在将其添加为依赖项后,构建再次工作。谢谢,我出现了编译错误。不幸的是,插件没有输出这个…或者在编译后运行。
    java.lang.RuntimeException: java.lang.NullPointerException
        at com.sun.tools.javac.main.Main.compile(Main.java:469)
        at com.sun.tools.javac.api.JavacTaskImpl.call(JavacTaskImpl.java:132)
        at com.mysema.maven.apt.AbstractProcessorMojo.execute(AbstractProcessorMojo.java:314)
        at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:106)
        at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:208)
        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:318)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:153)
        at org.apache.maven.cli.MavenCli.execute(MavenCli.java:555)
        at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:214)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:158)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:606)
        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:414)
        at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:357)
    Caused by: java.lang.NullPointerException
        at com.mysema.query.codegen.SimpleSerializerConfig.getConfig(SimpleSerializerConfig.java:29)
        at com.mysema.query.apt.DefaultConfiguration.<init>(DefaultConfiguration.java:129)
        at com.mysema.query.apt.jpa.JPAConfiguration.<init>(JPAConfiguration.java:69)
        at com.mysema.query.apt.jpa.JPAAnnotationProcessor.createConfiguration(JPAAnnotationProcessor.java:46)
        at com.mysema.query.apt.AbstractQuerydslProcessor.process(AbstractQuerydslProcessor.java:102)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:793)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:722)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1700(JavacProcessingEnvironment.java:97)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1029)
        at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1163)
        at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1108)
        at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:824)
        at com.sun.tools.javac.main.Main.compile(Main.java:439)
        ... 23 more