잡동사니
VSCode ClassNotFoundException 해결 본문
안녕하세요. yeTi입니다.
오늘은 VSCode
를 활용하면서 발생하는 ClassNotFoundException
을 해결해보려고 합니다.
작업환경
- VSCode : 1.48.2
현상
JPA
환경에서 Querydsl
을 사용하여 개발을 하고 있던 와중에 Debug
모드로 구동하니 QClass
를 사용하는 과정에서 java.lang.ClassNotFoundException
이 발생하였습니다.
2020-09-08 13:39:18.658 ERROR 25152 --- [nio-8080-exec-3] o.a.c.c.C.[.[.[/].[dispatcherServlet] : Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Handler dispatch failed; nested exception is java.lang.NoClassDefFoundError: .../QMember] with root cause
java.lang.ClassNotFoundException: ...QMember
at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:583) ~[na:na]
at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:178) ~[na:na]
at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521) ~[na:na]
이번에 STS
로 디버깅모드를 사용하거나 JAR
파일을 구동하면 발생하지 않는것으로 보아, VSCode
코드에서 Querydsl
의 경로를 인지하지 못하고 있다고 짐작하였습니다.
해결
.classpath
를 확인하니 querydsl
설정이 다음과 같이 되어있었습니다.
<classpathentry kind="src" output="bin/querydsl" path="src/main/generated">
<attributes>
<attribute name="gradle_scope" value="querydsl"/>
<attribute name="gradle_used_by_scope" value="querydsl"/>
</attributes>
</classpathentry>
scope
가 main
과 다르게 잡혀서 디버깅모드에서 인지를 못하고 있다고 판단하여 scope
를 다음과 같이 동일하게 맞췄습니다.
<classpathentry kind="src" output="bin/querydsl" path="src/main/generated">
<attributes>
<attribute name="gradle_scope" value="main"/>
<attribute name="gradle_used_by_scope" value="main"/>
</attributes>
</classpathentry>
이로써 디버깅모드에서 정상적으로 동작하는것을 확인할 수 있습니다.
변경 후 에도 해결이 안되면 workspace를 clean 해봅니다.Java: Clean the Java language server workspace
'IT > Java' 카테고리의 다른 글
자바에서 람다식을 사용하는 방법 (0) | 2021.03.29 |
---|---|
자바를 공부하는 방법 (0) | 2021.03.25 |
A fatal error has been detected by the Java Runtime Environment 해결 (0) | 2020.05.29 |
Solve ClassNotFoundException: org.junit.platform.engine.EngineDiscoveryListener (4) | 2020.03.24 |
Java 키워드 살펴보기 (0) | 2020.02.07 |
Comments