[Servlet/Ajax]NoClassDefFoundError 해결 방법[Eclipse]

아무래도 신미 엔지니어의 noy입니다.
Servlet과 Ajax를 사용하여 비동기 통신 할 수있는 웹 앱을 만들고 있습니다.
에러 해결에 조금 시간이 걸렸기 때문에 기록을 남깁니다.

개발 환경
에디터:Eclipse 2019-03 (4.11.0)
웹 서버: Apache Tomcat v9.0
언어: Java
도서관:
 ・jquery-3.4.1.min.js
  ·jackson-annotations-2.9.9.jar
 ··jackson-core-2.9.9.jar
  ·jackson-databind-2.9.9.jar

오류 내용



Servlet에서 ajax로 응답을 반환하려고하면 HTTP 상태 500 – Internal Server Error가 발생합니다.


Chrome 개발자 도구 'console' 탭

「500 에러는 뭐야?!」가 되어, 완야 완야와 조금 시간을 망쳐 버렸습니다만,


오류를 클릭하면 예외 보고서를 발견.
"근본 원인
java.lang.NoClassDefFoundError: com/fasterxml/jackson/databind/ObjectMapper

어라? ObjectMapper를 정의하는 파일은 가져올 것입니다 ....
그렇게 생각하면서 Eclipse를 여러가지 검토하고 있으면 「문제」탭에서 이하의 경고를 발견.



어쨌든 클래스 경로에 추가해야하는 jackson-XXXXXX-2.9.9.jar 파일이 참조되지 않았을 수도 있습니다 ...?

원인



ObjectMapper(Jackson의 클래스)가 정의되고 있는 파일(jackson-XXXXXX-2.9.9.jar)을 참조할 수 없고, java.lang.NoClassDefFoundError가 되고 있기 (위해)때문에.

※ Jackson이란… Java용의 JSON 파서 라이브러리의 1개. Java 객체와 JSON의 상호 변환이 가능하다.

따라서 "eclipse 클래스 경로 항목은 내보내거나 게시되지 않습니다."에서 구그 해 보았을 때, 다음 페이지를 보고 해결할 수 있었습니다.

htps // 코데다 y. / jp / 쿠 / 20190201/208565. HTML
"spring-mvc – Eclipse 경고: XXXXXXXXXXX.jar은 내보내거나 게시되지 않습니다. 런타임 ClassNotFoundExceptions가 발생할 수 있습니다."

해결책



jackson-XXXXXX-2.9.9.jar 파일을 참조 라이브러리에서 삭제하고 WEB-INF/lib 폴더에 직접 저장합니다.





참조 라이브러리에 있는 3개의 jackson-XXXXXX-2.9.9.jar 파일을 "빌드 경로에서 제외"에서 삭제.



WebContent/WEB-INF/lib 폴더에 세 개의 jackson-XXXXXX-2.9.9.jar 파일을 직접 드래그 앤 드롭.



파일 복사를 선택하고 확인



파일이 저장되었습니다.



3개의 jackson-XXXXXX-2.9.9.jar 파일에 대한 경고가 사라졌습니다. (지금은 나머지 2항목에 대해서는 무시)



500 오류도 사라지고 서블릿을 실행할 수있었습니다.

좋은 웹페이지 즐겨찾기