# AnnotationProcessor Querydsl java.lang.NoClassDefFoundError

**URL:** <https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107>\
**Category:** Help/Discuss\
**Created:** [May 26, 2018, 8:06am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107 "2018-05-26T08:06:43Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![humeurvagabonde](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@humeurvagabonde](https://discuss.gradle.org/u/humeurvagabonde)\
**Post date:** [May 26, 2018, 8:06am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/1 "2018-05-26T08:06:43Z")

</div>

Hello,

I have a multiproject and some of my subprojects uses JPA over Querydsl. To do that, at compile time we need to generate the querydsl classes (Q) using APT

I tried with and without the gradle-apt-plugin. During compile time I got the following error

```
Caused by: java.lang.NoClassDefFoundError: javax/persistence/Entity
    at com.querydsl.apt.jpa.JPAAnnotationProcessor.createConfiguration(JPAAnnotationProcessor.java:37)
    at com.querydsl.apt.AbstractQuerydslProcessor.process(AbstractQuerydslProcessor.java:79)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.callProcessor(JavacProcessingEnvironment.java:794)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.discoverAndRunProcs(JavacProcessingEnvironment.java:705)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.access$1800(JavacProcessingEnvironment.java:91)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment$Round.run(JavacProcessingEnvironment.java:1035)
    at com.sun.tools.javac.processing.JavacProcessingEnvironment.doProcessing(JavacProcessingEnvironment.java:1176)
    at com.sun.tools.javac.main.JavaCompiler.processAnnotations(JavaCompiler.java:1170)
    at com.sun.tools.javac.main.JavaCompiler.compile(JavaCompiler.java:856)
    at com.sun.tools.javac.main.Main.compile(Main.java:523)

```

I have the following build.gradle for my subproject

```
project(':echanges:infrastructure:jpa-db-adapter') {
  apply plugin: 'jacoco'
  apply plugin: 'idea'
  apply plugin: 'net.ltgt.apt'
  apply from: "$rootDir/gradle/org.gfc.integtest.gradle"

  tasks.withType(JavaCompile) {
      options.annotationProcessorGeneratedSourcesDirectory = file("$projectDir/src/generated3/java")
  }
  dependencies {

    annotationProcessor "com.querydsl:querydsl-apt:$querydslVersion:jpa"

    compile project(':echanges:application-core:core')
    implementation project(':commons')

    compile 'org.springframework.boot:spring-boot-starter-data-jpa'
    compile 'javax.inject:javax.inject:1'
    compile "com.querydsl:querydsl-jpa:$querydslVersion"
    compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlinVersion"
    compile "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"

    testCompile 'org.springframework.boot:spring-boot-starter-test'
    
    integrationTestCompile 'com.oracle:ojdbc6:11.2.0.3'
}

sourceSets {
    main {
        java {
            srcDirs = ["$projectDir/src/main/java", "$projectDir/src/generated/java"]
        }
    }
}

```

}

The JPA annotations are declared inside the hibernate-jpa-2.1-api. The spring data jpa pull this jar transitive

Thanks for your help

---

<div class="post-metadata">

**Author:** ![st\_oehme](https://sea1.discourse-cdn.com/gradle/user_avatar/discuss.gradle.org/st_oehme/32/5249_2.png) [@st\_oehme](https://discuss.gradle.org/u/st_oehme)\
**Post date:** [May 26, 2018, 9:59am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/2 "2018-05-26T09:59:21Z")

</div>

Looks like the queryDsl processor depends on javax.persistence, but doesn’t declare a dependency on it. To work around, you’ll have to manually add it to the annotationProcessor configuration. Consider opening a bug for queryDsl. They should add a dependency on it so it automatically brings it in for processing.

Note that the processor path (used for loading annotation processors and compiler plugins) and the compile classpath (what your code is allowed to link against) are two separate and different things. Dependencies on one are not visible to the other.

---

<div class="post-metadata">

**Author:** ![venkat](https://avatars.discourse-cdn.com/v4/letter/v/4491bb/32.png) [@venkat](https://discuss.gradle.org/u/venkat)\
**Post date:** [January 26, 2020, 2:16am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/3 "2020-01-26T02:16:29Z")

</div>

I am facing the similar issue like this only. The issue I am facing:

- What went wrong:  
Execution failed for task ‘:generateQueryDSL’.

> Annotation processor ‘com.querydsl.apt.jpa.JPAAnnotationProcessor’ not found

Can you please help me out how to manually add the annotation processor configuration. I am using querydsl 4.1.4 version. already adding the JAVAX Persistence.

Below is the sample:

implementation group: ‘org.hibernate.javax.persistence’, name: ‘hibernate-jpa-2.1-api’, version: ‘1.0.2.Final’

implementation group: ‘com.querydsl’, name: ‘querydsl-maven-plugin’, version: ‘4.1.4’  
implementation group: ‘com.querydsl’, name: ‘querydsl-core’, version: ‘4.1.4’  
implementation group: ‘com.querydsl’, name: ‘querydsl-apt’, version: ‘4.1.4’  
implementation group: ‘com.querydsl’, name: ‘querydsl-jpa’, version: ‘4.1.4’  
implementation group: ‘com.querydsl’, name: ‘querydsl-collections’, version: ‘4.1.4’  
implementation group: ‘com.querydsl’, name: ‘querydsl-codegen’, version: ‘4.1.4’

task generateQueryDSL(type: JavaCompile, group: ‘build’, description: ‘Generates the QueryDSL query types’) {  
source = sourceSets.main.java  
classpath = configurations.compileClasspath  
options.compilerArgs = [  
‘-proc:only’,  
‘-processor’,  
‘com.querydsl.apt.jpa.JPAAnnotationProcessor’  
]  
options.warnings = false  
destinationDir = sourceSets.generated.java.srcDirs.iterator().next()  
}

---

<div class="post-metadata">

**Author:** ![humeurvagabonde](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@humeurvagabonde](https://discuss.gradle.org/u/humeurvagabonde)\
**Post date:** [January 26, 2020, 12:39pm UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/4 "2020-01-26T12:39:45Z")

</div>

I added the following lines :

annotationProcessor group: ‘com.querydsl’, name: ‘querydsl-apt’, classifier: ‘jpa’  
annotationProcessor ‘jakarta.persistence:jakarta.persistence-api’

My versions are defined in a platform module , you can add them to the declarations.

---

<div class="post-metadata">

**Author:** ![vpasumar](https://avatars.discourse-cdn.com/v4/letter/v/91b2a8/32.png) [@vpasumar](https://discuss.gradle.org/u/vpasumar)\
**Post date:** [March 4, 2021, 5:55am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/5 "2021-03-04T05:55:09Z")

</div>

Hi Venkat, were able to solve the issue? i am facing the same issue. Can you please help me on the same?

---

<div class="post-metadata">

**Author:** ![humeurvagabonde](https://avatars.discourse-cdn.com/v4/letter/h/c6cbf5/32.png) [@humeurvagabonde](https://discuss.gradle.org/u/humeurvagabonde)\
**Post date:** [March 4, 2021, 8:55am UTC](https://discuss.gradle.org/t/annotationprocessor-querydsl-java-lang-noclassdeffounderror/27107/6 "2021-03-04T08:55:34Z")

</div>

I don’t have a new task dedicated to querydsl generation  
I’m relying to the annotationProcessor scope (i’m currently using kotlin kapt but using the java annotationProcessor is OK too)

In my project I have defined

> dependencies {  
> kapt group: ‘com.querydsl’, name: ‘querydsl-apt’, classifier: ‘jpa’  
> kapt ‘javax.persistence:javax.persistence-api’  
> …  
> }

Before that these annotations became standard Gradle, I used [GitHub - tbroyer/gradle-apt-plugin: [OBSOLETE] Gradle plugin making it easier/safer to use Java annotation processors](https://github.com/tbroyer/gradle-apt-plugin)  
It is deprecated but you can still read the README to have a better understanding
