인프런 커뮤니티 질문&답변

닉네임_한글 가능님의 프로필 이미지

작성한 질문수

실전! 스프링 데이터 JPA

p6spy 적용 시 gradle 프로젝트가 빌드되지 않습니다.

작성

·

107

1

java 버전17.0.9이고 springboot 버전은 3.2.10-SNAPSHOT 입니다.

 

implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'

 

build.gradle 파일에 로그 관련 부분 추가하니 아래와 같이 오류가 나는데 이유를 모르겠습니다.


Caused by: java.lang.NoClassDefFoundError: org/apache/maven/settings/building/SettingsBuildingRequest

at org.gradle.api.internal.artifacts.DependencyManagementBuildScopeServices.createMavenSettingsProvider(DependencyManagementBuildScopeServices.java:289)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)

at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)

at org.gradle.internal.service.ReflectionBasedServiceMethod.invoke(ReflectionBasedServiceMethod.java:35)

at org.gradle.internal.service.DefaultServiceRegistry$FactoryMethodService.invokeMethod(DefaultServiceRegistry.java:916)

 

 

 

 

 

답변 1

1

안녕하세요. 닉네임_한글 가능님, 공식 서포터즈 OMG입니다.

아래 build.gradle을 복사하여 확인해보시겠어요?

부트 버전은 혹시 몰라서 스냅샷 아닌 버전으로 했습니다 😀

plugins {
    id 'java'
    id 'org.springframework.boot' version '3.2.9'
    id 'io.spring.dependency-management' version '1.1.6'
}

group = 'study'
version = '0.0.1-SNAPSHOT'

java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(17)
    }
}

repositories {
    mavenCentral()
}

dependencies {
    implementation 'org.springframework.boot:spring-boot-starter-data-jpa'
    implementation 'org.springframework.boot:spring-boot-starter-web'
    implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0'
    compileOnly 'org.projectlombok:lombok'
    runtimeOnly 'com.h2database:h2'
    annotationProcessor 'org.projectlombok:lombok'
    testImplementation('org.springframework.boot:spring-boot-starter-test') {
        exclude group: 'org.junit.vintage’, module: ‘junit-vintage-engine'
    }
    //Querydsl 추가
    implementation 'com.querydsl:querydsl-jpa:5.0.0:jakarta'
    annotationProcessor "com.querydsl:querydsl-apt:${dependencyManagement.importedProperties['querydsl.version']}:jakarta"
    annotationProcessor "jakarta.annotation:jakarta.annotation-api"
    annotationProcessor "jakarta.persistence:jakarta.persistence-api"

}

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

build.gradle을 수정하면 우측 상단의 코끼리 아이콘을 클릭해주세요.

image.png

 

감사합니다.

위의 dependency를 붙여 넣어도 똑같은 오류가 나네요.

---------------------------------------------------------------------------

Unable to load class 'org.apache.maven.settings.io.SettingsReader'.

This is an unexpected error. Please file a bug containing the idea.log file.

 

새로운 프로젝트를 만들어서 해야 하나요?

 

기존 코드와 프로젝트를 그대로 둔 채 새로 프로젝트를 생성해주세요.

그리고 build.gradle만 복사하여 위 과정을 진행해주세요.

빌드 시 문제가 없다면 기존 프로젝트의 코드만 복사해와서 확인해주세요 😀

해결이 안된다면 댓글 남겨주세요 ^^

새롭게 프로젝트 생성해서 소스코드 입력없이 build.gradle만 변경했는데, 여전히 증상은 똑같습니다. idea log도 아래와 같이 나왔습니다.

2024-08-31 15:25:40,030 [ 102951] INFO - #o.j.p.g.s.e.GradleExecutionHelper - Passing command-line to Gradle Tooling API: --init-script C:\Users\seong\AppData\Local\Temp\ijIdeaPluginConfigurator1.gradle --init-script C:\Users\seong\AppData\Local\Temp\ijMapper1.gradle -Didea.gradle.download.sources=false -Didea.sync.active=true -Didea.resolveSourceSetDependencies=true -Porg.gradle.kotlin.dsl.provider.cid=56634029799400 -Pkotlin.mpp.enableIntransitiveMetadataConfiguration=true --init-script C:\Users\seong\AppData\Local\Temp\ijInit1.gradle -Didea.active=true -Didea.version=2024.1.1 -Didea.vendor.name=JetBrains

2024-08-31 15:25:40,406 [ 103327] INFO - #o.j.p.g.s.p.GradleProjectResolver - Gradle project resolve error

org.gradle.tooling.BuildActionFailureException: The supplied phased action failed with an exception.

at org.gradle.tooling.internal.consumer.connection.PhasedActionAwareConsumerConnection.run(PhasedActionAwareConsumerConnection.java:58)

at org.gradle.tooling.internal.consumer.connection.ParameterValidatingConsumerConnection.run(ParameterValidatingConsumerConnection.java:62)

................................................

at java.base/java.lang.Thread.run(Thread.java:840)

Caused by: org.gradle.api.reflect.ObjectInstantiationException: Could not create an instance of type org.gradle.api.internal.initialization.DefaultScriptHandler.

at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.doCreate(DependencyInjectingInstantiator.java:69)

at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.newInstance(DependencyInjectingInstantiator.java:55)

at org.gradle.api.internal.model.DefaultObjectFactory.newInstance(DefaultObjectFactory.java:92)

................................................

Caused by: java.lang.NoClassDefFoundError: org/apache/maven/settings/io/SettingsReader

at org.gradle.api.internal.artifacts.DependencyManagementBuildScopeServices.createMavenSettingsProvider(DependencyManagementBuildScopeServices.java:289)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)

at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)

................................................

$DefaultDependencyResolutionServices.getDependencyLockingHandler(DefaultDependencyManagementServices.java:635)

at org.gradle.api.internal.initialization.DefaultScriptHandler.<init>(DefaultScriptHandler.java:81)

at org.gradle.api.internal.initialization.DefaultScriptHandler_Decorated.<init>(Unknown Source)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)

at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:77)

at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)

at org.gradle.internal.instantiation.generator.AsmBackedClassGenerator$InvokeConstructorStrategy.newInstance(AsmBackedClassGenerator.java:2105)

at org.gradle.internal.instantiation.generator.AbstractClassGenerator$GeneratedClassImpl$GeneratedConstructorImpl.newInstance(AbstractClassGenerator.java:528)

at org.gradle.internal.instantiation.generator.DependencyInjectingInstantiator.doCreate(DependencyInjectingInstantiator.java:64)

... 156 more

Caused by: java.lang.ClassNotFoundException: org.apache.maven.settings.io.SettingsReader

at org.gradle.internal.classloader.TransformingClassLoader.findClass(TransformingClassLoader.java:52)

... 210 more

2024-08-31 15:25:40,459 [ 103380] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:\Program Files\Java\jdk-17

2024-08-31 15:25:40,485 [ 103406] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:\Program Files\Java\jdk-17

 

캐시 삭제 확인이 필요할 것 같아요 😀 아래 3가지를 진행해서 확인하신 후 결과를 알려주시겠어요?

(1) implementation 'com.github.gavlyukovskiy:p6spy-spring-boot-starter:1.9.0' 추가 전에는 문제가 없었는데 추가하고 나서 발생한 문제가 맞을까요? 문제 발생 상황을 조금 더 자세히 남겨주시면 확인에 도움이 됩니다.

 

(2) Gradle 캐시 삭제를 진행해주세요.

아래 O로 표시한 터미널 창을 열고 아래 명령어를 입력해주세요.

맥) ./gradlew clean build --refresh-dependencies

윈도우) gradlew clean build --refresh-dependencies

image.png

 

(3) 인텔리제이 캐시 삭제

Invalidate Caches... > Invalidate and Restart

image.pngimage.png

 

그냥 다른이름의 new project를 생성해도 아래와 같은 동일한 에러가 나네요.

Unable to load class 'org.apache.maven.settings.building.SettingsBuildingRequest'.

This is an unexpected error. Please file a bug containing the idea.log file.

image.png

그레이들 그루비로 생성했는데, idea 로그상에는 아래와 같이 코틀린 셋팅 부분의 로그가 찍히는데 프로젝트가 제대로 생성된것이 맞는건가요?

Caused by: java.lang.ClassNotFoundException: org.apache.maven.settings.building.SettingsBuildingRequest

at org.gradle.internal.classloader.TransformingClassLoader.findClass(TransformingClassLoader.java:52)

... 210 more

2024-08-31 15:51:00,377 [ 130520] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:\Program Files\Java\jdk-17

2024-08-31 15:51:00,393 [ 130536] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:\Program Files\Java\jdk-17

2024-08-31 15:51:00,397 [ 130540] INFO - #o.j.k.i.script - [KOTLIN_SCRIPTING] Loading script definitions: classes = [org.gradle.kotlin.dsl.KotlinInitScript], classpath = [C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-core-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-core-api-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-extensions-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-shared-runtime-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-tooling-models-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\kotlin-stdlib-1.9.22.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\kotlin-compiler-embeddable-1.9.22.jar]

2024-08-31 15:51:00,430 [ 130573] INFO - #o.j.k.i.script - [KOTLIN_SCRIPTING] Loaded definitions: classes = [org.gradle.kotlin.dsl.KotlinInitScript], definitions = [KotlinInitScript]

2024-08-31 15:51:00,435 [ 130578] INFO - #o.j.p.g.GradleManager - Instructing gradle to use java from C:\Program Files\Java\jdk-17

2024-08-31 15:51:00,438 [ 130581] INFO - #o.j.k.i.script - [KOTLIN_SCRIPTING] Loading script definitions: classes = [org.gradle.kotlin.dsl.KotlinSettingsScript], classpath = [C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-core-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-core-api-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-extensions-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-shared-runtime-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\gradle-kotlin-dsl-tooling-models-8.8.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\kotlin-stdlib-1.9.22.jar, C:\Users\seong\.gradle\wrapper\dists\gradle-8.8-bin\dl7vupf4psengwqhwktix4v1\gradle-8.8\lib\kotlin-compiler-embeddable-1.9.22.jar]

 

 

 

start.spring.io에서 프로젝트를 생성하고 나서

인텔리제이에서 프로젝트를 열 때 정상적으로 동작하는 방법으로 열었는지 확인이 필요합니다.

프로젝트를 어떻게 실행했는지와 메시지 로그를 텍스트가 아닌 화면 캡쳐로 남겨주시겠어요?

실행한 과정에 대한 화면 정보과정에 대한 확인이 필요 할 것 같아요.

저 메시지가 나오는 과정을 확인 할 수 있게 캡쳐 부탁드립니다 ^^

남기신 프로젝트 생성 화면에서는 말씀하신대로 Kotlin이 출력될 요소가 아닌 항목들로 선택했기 때문에 Kotlin관련 메시지가 출력이 안되는게 맞을 것 같습니다.

그렇다면 프로젝트를 실행하고, Kotlin 관련 빌드 오류 메시지가 나오는 상황까지의 흐름을 확인해야 합니다 😀

spring.io에서 생성을 아래와 같이 하였습니다.

image.png

압축 풀고 아무것도 안하고 open as project를 했습니다.

image.png

 

캡쳐 화면 감사합니다 😀

관련해서 찾아보니 다음 링크와 비슷한 상황일 것으로 예상합니다.

https://medium.com/@minjeesong95/unable-to-load-class-org-gradle-api-logging-loglevel-bd06e0515ffb

프로젝트 혹은 실행중인 PC의 자바 세팅과 관련이 있을 것 같습니다.

 

Q1. PC에 자바가 설치되어 있을까요?

명령 프롬프트(CMD) 에서 java -version 명령을 입력한 화면의 캡쳐 결과를 남겨주시면 확인에 도움이 됩니다.

(위에 링크처럼 환경변수편집 창 의 화면도 같이 남겨주시면 더 도움이 됩니다.)

 

Q2.프로젝트 (인텔리제이) 내에서 자바 세팅 확인이 필요합니다.

다음 캡쳐 화면을 남겨주시겠어요?

  1. 인텔리제이에서 ctrl + alt + s를 입력하여 설정창을 열고 검색란에 gradle 검색

  2. Gradle JVM 확인

    image.png

    3.창을 닫고, ctrl + alt + shift + s 를 입력

     

    Project Settings > Project의 SDK 확인

    image.png

     

PC에 설치한 자바와 인텔리제이에 설정한 자바 확인이 필요합니다 😀

인텔리제이 내에서 두 개의 창이 다르니 각각 단축키를 입력하여 확인해주세요^^

springboot 3.2.9 버전일 시

gradle dependency 충돌 때문에 제대로 빌드가 안되었네요.

 

gradle-wrapper.properties 파일에서 셋팅만 바꿨습니다.

해결되었습니다.

감사합니다.

distributionUrl=https\://services.gradle.org/distributions/gradle-8.2.1-bin.zip