작성
·
8.7K
2
질문용 파일 링크: https://drive.google.com/file/d/1H7Jk68AinSPuCjEWiavLgFMpQtEuHdhT/view?usp=sharing
gradle build를 실행할 때 계속 오류가 납니다. 우측의 Gradle Tab > (프로젝트명) > Tasks > build > build 실행
jar 파일만 생성시킬 땐 무사히 만들어지는데 build 명령을 내릴 때는 test code 단계에서 계속 오류가 납니다.
test code가 분명 있는데도 찾지를 못하네요. ClassNotFoundException
자주 하는 질문에 적어주신 방법은 다 시도해봤습니다.
1. IntelliJ IDEA로 test code 실행주체 바꾸기,
2. 설정이 java 11로 제대로 되어있는지 확인하고 바꾸기(자주 하는 질문 매뉴얼(https://docs.google.com/document/d/1j0jcJ9EoXMGzwAA2H0b9TOvRtpwlxI5Dtn3sRtuXQas/edit#heading=h.f9xqb7l8nuph)에 적으신 대로 선택했습니다).
3. project close 한 다음에 build.gradle 파일을 open as project로 열어서 재실행하기
4. 혹시나 버전 호환성 문제일까 싶어서 원래는 2.6.4 버전이었는데 강의에서 나온 2.3.1 버전으로 다운그레이드해서 재실험해봤거든요. 그런데도 똑같은 오류가 계속 뜨네요.
org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'KYH.Elementary.ElementaryApplicationTests'.
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:53)
at java.base@11.0.14/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base@11.0.14/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base@11.0.14/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base@11.0.14/java.lang.reflect.Method.invoke(Method.java:566)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
at org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
at org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
at org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
at com.sun.proxy.$Proxy2.processTestClass(Unknown Source)
at org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
at org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
at org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
at org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
at app//worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
Caused by: org.gradle.internal.UncheckedException: java.lang.ClassNotFoundException: KYH.Elementary.ElementaryApplicationTests
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:68)
at org.gradle.internal.UncheckedException.throwAsUncheckedException(UncheckedException.java:41)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:112)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.access$100(JUnitPlatformTestClassProcessor.java:54)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:89)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor$CollectAllTestClassesExecutor.execute(JUnitPlatformTestClassProcessor.java:79)
at org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
... 18 more
Caused by: java.lang.ClassNotFoundException: KYH.Elementary.ElementaryApplicationTests
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:581)
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178)
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
at java.base/java.lang.Class.forName0(Native Method)
at java.base/java.lang.Class.forName(Class.java:398)
at org.gradle.api.internal.tasks.testing.junitplatform.JUnitPlatformTestClassProcessor.loadClass(JUnitPlatformTestClassProcessor.java:110)
답변 5
10
안녕하세요. 똑같은 오류로 고생하다가 재설치하고 됐다가
어쩌다보니 다시 똑같은 에러가 발생하게 되어 제 경우에 그 에러가 발생한 원인에 대해서 말씀드리고자 합니다.
혹시 Edit Custom VM options 에서
옵션을 지정하지 않으셨나요?? 이런 상태에서 지금 현재 프로젝트가 위치한 상위 경로에 한글파일 폴더가 존재하는 상황이신가요? 이러한 상황이라면 그 한글파일 폴더 이름을 영어로 바꾸시면 정상적으로 작동됩니다.
이러한 에러가 생기는 원인은 Windows에서 사용하는 한글 인코딩과 JVM에서 사용하는 file encoding이 달라서 프로젝트의 파일들을 제대로 읽지 못하는 문제로 보입니다.
8
안녕하세요 똑같은 문제로 고생하다가 해결방법을 찾아서 공유드립니다.
아래 사진과 같이 설정에서 gradle을 검색하신 뒤 빨간색 칸 부분이 아마 gradle이실거라 예상됩니다.
이 부분을 intellij 로 바꿔주시면 정상적으로 작동할 것 같습니다.
1
안녕하세요. 성해인님
저도 진행해보니 잘 되는데요.
프로젝트 초기화를 진행해야 합니다.
먼저 프로젝트를 닫은 다음에
File -> Open -> 해당 프로젝트의 build.gradle을 선택해주세요. 그 다음에 선택창이 뜨는데, Open as Project를 선택해주세요.
그래도 안되면, IntelliJ부터 다시 설치해보시겠어요?
감사합니다.
0
서포터즈 David님 알려주신 방법 실행해봤습니다.
1번을 해도 여전히 같은 오류가 나기에 2번을 시도해보려고 했는데 Repair IDE 항목이 File 메뉴에 없더군요.
이상해서 IDEA 홈페이지에 들어가서 확인해봤는데 거기 스크린샷은 Mac 전용이더라고요. 제 환경은 Windows입니다. 위치만 다르지 어딘가엔 Repair IDE 메뉴가 있을 거라 생각하고 "repair"로 검색해봤는데 해당 항목이 actions에 없다고 나오더군요.
파일 메뉴를 그래서 직접 뒤져봤는데도 안 보이더군요.
여전히 같은 오류로 고통받고 있는 중입니다. 정녕 IntelliJ IDEA 를 repair하거나 삭제했다 재설치하는 것밖에 방법이 없는 걸까요?
사실 제가 java 8 버전에서 java 11 버전으로 업그레이드를 했는데 업그레이드 과정에서 무언가의 오류가 일어나지 않았나 의심이 됩니다. (JAVA_HOME 환경변수는 11 버전에 맞춰서 재설정했습니다)
정 안 되면 물론 IntelliJ를 삭제 -> 재설치해야겠지만 java 8 버전이었을 땐 해당 오류는 발생하지 않았습니다.
test class만 인식할 수 있으면 해당 에러는 해결이 될 것 같은데 혹시 이를 수동으로 재설정할 수 있는 방법이 있을까요?
+ 추가합니다
build.gradle의 해당 부분을 이렇게 고치니 build 자체는 되긴 됩니다
tasks.named('test') {
useJUnitPlatform()
scanForTestClasses = false
include "**/*Test.class" // whatever Ant pattern matches your test class files
}
하지만 이렇게 하면 test를 진행하지 못하기에 처음에 말씀드렸던 문제점을 꼭 해결하고 싶습니다.
네, 프로젝트도 새롭게 만들어보았습니다. 사실 처음에 만든 건 kyh으로 시작하는 이름의 프로젝트 파일이었고, 제가 이 글에 적은 프로젝트는 새로 만든 두 번째 프로젝트 파일입니다.
jdk "밴더"가 정확히 무슨 의미인지는 잘 모르겠지만 jdk를 어디에서 다운받았냐, 는 말씀이시라면 oracle의 java 11 jdk를 다운받았습니다.
(링크: https://www.oracle.com/java/technologies/downloads/#java11-windows)
11.0.14 version이고 openjdk는 아닌 것 같습니다. standard version이라 적혀있네요.
답변 달아주신 걸 아주 늦게 확인했네요. 알려주신 방법이 크게 도움 됐습니다. 감사합니다.
(VM Options란에 UTF-8 설정은 해놨는데 폴더명이 한글일 땐 여전히 실행이 안 되더라고요
경로에 존재하는 모든 파일명을 죄다 영문으로 바꾼 후에야 test를 포기하지 않고도 빌드가 성공했습니다)