当前位置: 首页 > 知识库问答 >
问题:

注释处理器和依赖项

马淳
2023-03-14

我正在使用gradle/querydsl和JPA 2.1。

我想使用APT(qenties)生成querydsl元数据。

为此,我使用了gradle apt插件和gradle 4.7

在我的项目中,我使用以下配置了compileJava选项:

compileJava{options.annotationProcessorGeneratedSourcesDirectory=file(“$projectDir/src/generated2/java”)}

在我的依赖项中我添加了

编译组织。springframework。启动:spring boot starter data jpa的“annotationProcessor”com。querydsl:querydsl apt:$querydsl版本:jpa“

spring starter添加了org。冬眠javax。持久性:hibernate-jpa-2.1-api:1.0.0。包含javax的最后一个jar。坚持不懈compileClasspath的实体类。

启动compileJava任务时,我得到了一个错误:,原因是:java。lang.NoClassDefFoundError:javax/persistence/Entity at com。querydsl。apt.jpa。JPA注释处理器。createConfiguration(JPAAnnotationProcessor.java:37)

不理解注释处理器为什么无法加载此类。


共有1个答案

窦彦君
2023-03-14
匿名用户

以防其他人正在搜索。这是我的完整解决方案(基于您的回复)。重要的部分是网络。ltgt。apt*插件,用于激活eclipse中的代码生成,以及最后三个querydsl依赖项。

buildscript {
    ext {
        springBootVersion = '2.0.5.RELEASE'
    }
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
    }
}


plugins { // activates the automatic code generation
    id 'net.ltgt.apt' version '0.18'
    id 'net.ltgt.apt-eclipse' version '0.18' 
}


apply plugin: 'java'
apply plugin: 'eclipse-wtp'
apply plugin: 'org.springframework.boot'
apply plugin: 'io.spring.dependency-management'
apply plugin: 'war'

group = 'com.test'
version = '0.0.1-SNAPSHOT'
sourceCompatibility = 1.8

repositories {
    mavenCentral()
}

configurations {
    providedRuntime
}


dependencies {
    runtimeOnly             'com.h2database:h2'
    implementation          'org.springframework.boot:spring-boot-starter-actuator'
    implementation          'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation          'org.springframework.boot:spring-boot-starter-web'
    providedRuntime         'org.springframework.boot:spring-boot-starter-tomcat'


    testImplementation      'org.springframework.boot:spring-boot-starter-test'
    testImplementation      'org.springframework.boot:spring-boot-starter-webflux'

    // querydsl
    annotationProcessor     'com.querydsl:querydsl-apt:4.1.3:jpa'
    annotationProcessor     'org.springframework.boot:spring-boot-starter-data-jpa' // needed because the query dsl annotation processor doesn't recognize javax.persistence.Entity
    compile                 'com.querydsl:querydsl-jpa:4.1.3'
}

 类似资料:
  • 我有一个包含2个模块的maven项目。其中一个模块包含注释处理器。当我尝试将项目作为Android项目的依赖项导入时,它不会运行注释处理器。找不到生成的类文件。 我从jitpack导入如上所示的项目。jitpack上的构建成功了,我也可以在本地访问代码,这意味着编译成功了。但是应该生成的类并没有生成。所以要么是处理器没有启动,要么是我生成的类在错误的位置?android项目确实使用了许多其他带有注

  • 我有一个简单的注释处理器,应用如下: 要使此处理器工作,-函数的名称和-接口函数参数必须匹配。它检查此并使用注释的参数来查看提供的类并在此基础上进行一些代码生成。 它生成一个文件。 我已经阅读了关于增量注释处理的文档,但是我不能决定将哪一个类别应用到这个处理器上。以下是我的考虑: < li >它不能是< code>isolating,因为它并不从带注释的元素的AST中派生所有内容,因为它也从注释参

  • 我试图处理这个错误(我在Android Studio更新东西之前从来没有过这个错误): 现在必须显式声明注释处理器。发现编译类路径上的以下依赖项包含注释处理器。请将它们添加到annotationProcessor配置中。-auto-value-1.4.jar(com.google.auto.value:auto-value:1.4)或者,设置android.defaultconfig.javaCo

  • 我有使用maven-processor-plugin的代码,让Hibernate在Java项目的文件夹一些类。我正在准备将项目迁移到Java 11,在开发环境和运行时环境中。 到目前为止,在Hibernate 4.3.10.Final和Java 8中一切正常。在安装JDK 11和使用Hibernate5.4.4.Final之后,我遇到了臭名昭著的<code>javax.annotation。生成的

  • 需要注释处理器的帮助。我创建了一个简单的注释处理器,它使用@autoservice注释来检查注释的字段是否为最终字段。但它没有显示任何编译时错误。这是我的配置 注释: 注释处理器: pom文件: 测试文件:

  • 问题内容: 我认为许多专业人员不切换到注释驱动的依赖注入的主要原因是,它不支持在开发/测试/生产环境之间进行切换。在许多情况下,出于开发目的,您不仅可以使用不同的服务(及其连接),而且有时还需要模拟它们或创建Dummy实例。 昨天我想出了一种使用Spring注释的解决方案: …应该可以,但是不好。 对于您的解决方案或论点,我将非常感兴趣:为什么这不是一个真正的问题;-)欢迎Guice,Spring