개인적인 정리

java.lang.NoClassDefFoundError: javax/json/JsonException 본문

전자정부표준프레임워크/maven

java.lang.NoClassDefFoundError: javax/json/JsonException

yeon.Biju 2022. 7. 14. 15:46

maven update project 를 하고 톰캣을 실행하면 아래와 같은 에러가 발생하였다. 

Caused by: org.apache.catalina.LifecycleException: 자식 컨테이너를 시작 중 실패했습니다. at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:938) at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:835) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) ... 13 more Caused by: java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/egovframework-all-in-one]]을(를) 시작하지 못했습니다. at java.util.concurrent.FutureTask.report(FutureTask.java:122) at java.util.concurrent.FutureTask.get(FutureTask.java:192) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:926) ... 21 more Caused by: org.apache.catalina.LifecycleException: 구성요소 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/egovframework-all-in-one]]을(를) 시작하지 못했습니다. at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:440) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:198) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1396) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1386) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75) at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134) at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:919) ... 21 more Caused by: java.lang.NoClassDefFoundError: javax/json/JsonException at java.lang.Class.getDeclaredConstructors0(Native Method) at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671) at java.lang.Class.getConstructor0(Class.java:3075) at java.lang.Class.getConstructor(Class.java:1825) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142) at org.apache.tomcat.websocket.Util.getDecoders(Util.java:378) at org.apache.tomcat.websocket.pojo.PojoMethodMapping.<init>(PojoMethodMapping.java:108) at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:155) at org.apache.tomcat.websocket.server.WsServerContainer.addEndpoint(WsServerContainer.java:279) at org.apache.tomcat.websocket.server.WsSci.onStartup(WsSci.java:126) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5219) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183) ... 27 more Caused by: java.lang.ClassNotFoundException: javax.json.JsonException at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1412) at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1220) ... 39 more

 

그래서 에러가 난 이클립스와 에러가 나지 않은 다른 이클립스를 비교해봤다.

그랬더니 아래부분이 빠져있었다.

그래서 추가를 해줬더니 잘 돌아간다.

아래와 같이 추가를 한다.

아래와 같이 Maven Dependency가 나타나게 된 것을 확인한 후에 Apply and Close 를 클릭하여 마무리 한다. 

 

위와 같이 하게 된 과정을 생각해보면, 

java.lang.NoClassDefFoundError: javax/json/JsonException 와 같은 에러였고 해결방법을 검색해봤지만 쓸모있는 게 없었다. 그리고 한참을 생각하고 소스를 가지고 고민해봤을 때 라이브러리가 없는 상태는 아니라고 확신을 하게 되었다.

따라서  NoClassDefFoundError... 에 집중과 집착을 하면 안된다고 생각을 하게 되어 혹시나 잘 돌아가는 다른 이클립스랑 비교를 해보면 어떨까 싶은 생각에 이르게 된 것이다.

 

그래서 하고 싶은 말은/정리하고 싶은 말은 

java.lang.NoClassDefFoundError: javax/json/JsonException

와 같은 에러일 때 위의 방법으로 해결하는 케이스도 있을 것이고 그렇지 않은 케이스도 있지 않을까 라고 생각한다는 것이다. 동일한 에러라고 해서 방법이 한가지만은 아니니까 말이다. 

 

Comments