inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

querydsl 추가시 실행오류가 뜹니다..

71

정중한 개구리

작성한 질문수 39

0

// buildscript 추가
buildscript {
    ext {
       queryDslVersion = "5.0.0"
    }
}
// buildscript 추가 끝

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.5'
    id 'io.spring.dependency-management' version '1.1.5'
    id 'com.ewerk.gradle.plugins.querydsl' version '1.0.10'  // QueryDSL 플러그인
}

group = 'com.example'
version = '0.0.1-SNAPSHOT'

configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-thymeleaf'
    implementation 'org.springframework.boot:spring-boot-starter-validation'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation 'org.springframework.boot:spring-boot-starter-test'
    testRuntimeOnly 'org.junit.platform:junit-platform-launcher'

    // queryDSL
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:5.0.0:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"

}
tasks.named('test') {
    useJUnitPlatform()
}

//querydsl 추가
def querydslDir = "$buildDir/generated/querydsl"

querydsl {
    jpa = true
    querydslSourcesDir = querydslDir
}
sourceSets {
    main.java.srcDir querydslDir
}
compileQuerydsl{
    options.annotationProcessorPath = configurations.querydsl
}
configurations {
    compileOnly {
       extendsFrom annotationProcessor
    }
    querydsl.extendsFrom compileClasspath
}

//querydsl 추가 끝

우선 제 build.gradle 상태이구요 Tasks에서 clean후 compileQuerydsl로 Q타입 생성합니다.

compileJava로 하면 error: Attempt to recreate a file for type com.example.demo.entity.QMember << 이런 오류가뜹니다.

 

그리고 어플리케이션 실행히시키면 error: Could not find class file for 'com.example.demo.entity.Member'. < 이런오류가 나오네요.. 해결방법 부탁드립니다..

답변 1

0

인프런 AI 인턴

안녕하세요, 인프런 AI 인턴입니다.

정중한 개구리님께서 겪고 계신 문제는 build.gradle 구성에서 QueryDSL 관련 설정이 충돌하거나 누락된 경우일 수 있습니다. 아래 몇 가지 해결 방법을 시도해 보세요.

  1. annotationProcessorcompileOnly의 충돌 문제:

    • compileOnly 설정에 annotationProcessor를 추가했습니다만, 이 부분이 불필요할 수 있습니다. 두 설정이 충돌 없이 작동하도록 주의가 필요합니다. annotationProcessor를 독립적으로 사용해 보세요.
  2. compileQuerydsl 설정 확인:

    • compileQuerydslannotationProcessorPath를 올바르게 설정했는지 확인하세요. 주석 처리 및 다른 설정과 중복되지 않도록 확인합니다.
  3. sourceSets 설정 추가:

    • sourceSets에서 설정한 querydslDir가 제대로 정의되어 있는지 확인하세요. 필요시 경로를 직접 출력하여 유효한지 확인해 보세요.
  4. 기존에 생성된 Q 타입 삭제:

    • 오류발생 시 기존에 생성된 파일을 지우고 새롭게 파일을 생성해야 할 경우도 있습니다. build directory는 지우고 새롭게 compileQuerydsl로 Q타입을 생성해 보세요.

위의 조언을 통해 문제가 해결되지 않는다면, 각 의존성 버전의 호환성을 다시 한번 확인하고 annotationProcessorclasspath 관련 설정을 재조정하는 것도 딜레이가 될 수 있습니다.

도움이 되셨기를 바랍니다. 추가적인 질문 있으시면 언제든 말씀해 주세요. 😊

정보 출처: Spring Boot Reference Documentation v3.1.5 Spring Data JPA - Reference Documentation v3.1.5

0

정중한 개구리

compileonly 지우고 해봐도 error: Could not find class file for 'com.example.demo.entity.Member'. 이런 에러코드가 나옵니다.. 아마 querydsl 부분때문에 오류가 나는거같은데요

 

어떻게해야하나요.. 그냥 오류없이 작동하는 bulid.gradle 코드를 가져와주실수없나요..

백준 서비스 종료

9

769

1

강의 추천해주세요

2

16

1

[업데이트] 파이썬 패키지 부분에서 안되어서 강의 진행 불가

2

59

3

완전히 똑같이 따라해도 exe파일이 안만들어져서 실행이 안됩니다.

1

51

3