본문 바로가기
IT

SpringBoot에서 JSON 라이브러리 ClassNotFound 오류 해결 - Maven, NoClassDefFoundError

by 카카오망고 2025. 5. 17.
반응형

목차

👉SpringBoot에서 JSON 라이브러리 ClassNotFound 오류 해결 알아보기

서론

개발자라면 누구나 한 번쯤은 겪어봤을 법한 오류 중 하나가 바로 ClassNotFoundError입니다. 이 오류는 특정 클래스를 찾지 못할 때 발생하는데, 특히 SpringBoot와 같은 프레임워크를 사용할 때 종종 마주하게 됩니다. 이 글에서는 SpringBoot에서 JSON 라이브러리와 관련된 ClassNotFoundError의 원인과 이를 해결하는 방법을 다루어 보겠습니다. 많은 개발자들이 Jenkins와 같은 CI/CD 도구를 사용하면서 로컬 환경에서는 문제가 없던 코드가 빌드 후 오류를 발생시키는 경우를 종종 경험합니다. 이러한 상황에서 발생하는 오류를 해결하기 위한 여러 방법을 살펴보겠습니다.

 

JSON은 데이터 전송 및 저장에 있어 매우 유용한 형식이지만, 관련 라이브러리의 의존성 문제는 오류의 원인이 될 수 있습니다. Maven을 이용한 의존성 관리에서 발생하는 여러 가지 문제를 이해하고 해결하는 것은 개발자에게 중요한 스킬입니다. 본 글에서는 이러한 문제를 해결하기 위한 구체적인 단계와 함께, JSON 라이브러리 추가 및 Maven의 scope 변경 등에 대한 내용을 다루겠습니다. 마지막으로, 오류를 예방하기 위한 팁도 제공하니 많은 도움이 되길 바랍니다.

1. ClassNotFoundError 이해하기

ClassNotFoundError는 자바에서 특정 클래스를 찾지 못할 때 발생하는 예외입니다. 이 오류는 대개 컴파일 타임에는 문제가 없던 클래스가 런타임 시에 누락되어 발생합니다. 실제로, 개발 환경에서는 모든 것이 잘 작동하지만, 프로덕션 환경에서 빌드 후 오류가 발생하는 경우가 많습니다. 이러한 현상은 의존성이 제대로 설정되지 않았거나, 특정 라이브러리가 제대로 포함되지 않았기 때문입니다.

 

특히, SpringBoot와 같은 프레임워크에서는 다양한 라이브러리가 의존성으로 포함되어 있습니다. 이 과정에서 JSON과 관련된 라이브러리들이 포함되지 않거나 잘못된 버전이 참조되는 경우 ClassNotFoundError가 발생할 수 있습니다. 또한, Jenkins와 같은 CI/CD 도구에서 빌드를 수행할 때, 로컬에서와는 다른 환경설정이나 의존성 문제로 인해 오류가 발생할 가능성이 높습니다.

2. JSON 라이브러리 선택하기

SpringBoot에서 JSON을 처리하기 위해서는 여러 라이브러리를 사용할 수 있습니다. 대표적으로는 Jackson, Gson, org.json 등이 있습니다. 이 글에서는 org.json 라이브러리를 기준으로 다루겠지만, 각 라이브러리의 특징을 이해하는 것이 중요합니다. 예를 들어 Jackson은 Spring과의 통합이 잘 되어 있어 매우 널리 사용됩니다.

 

다음은 각 JSON 라이브러리의 특징입니다:

  • Jackson: Spring과의 호환성이 뛰어나며, 다양한 데이터 형식을 지원합니다.
  • Gson: 구글에서 개발한 라이브러리로, 사용이 간편하고 빠릅니다.
  • org.json: 간단한 JSON 처리를 위해 많이 사용되며, 기본적인 기능을 제공합니다.
이를 통해 개발자는 프로젝트의 요구사항에 맞는 라이브러리를 선택할 수 있습니다.

👉SpringBoot에서 JSON 라이브러리 ClassNotFound 오류 해결 바로가기

3. Maven 의존성 추가하기

JSON 라이브러리를 사용하기 위해서는 Maven의 pom.xml 파일에 해당 라이브러리를 추가해야 합니다. 이를 통해 라이브러리를 프로젝트에 포함시키고 사용할 수 있게 됩니다. 예를 들어 org.json 라이브러리를 추가하려면 다음의 의존성을 pom.xml에 추가해야 합니다.

 

 

이 외에도, Gson 또는 Jackson과 같은 라이브러리도 동일한 방식으로 추가할 수 있습니다. 의존성을 추가한 후에는 Maven을 통해 프로젝트를 빌드하면 라이브러리가 포함됩니다. 그러나 빌드 후에는 의존성이 제대로 추가되었는지 확인하는 것이 중요합니다.

4. Maven Scope 이해하기

Maven에서는 의존성의 범위를 설정할 수 있습니다. 이 범위는 해당 라이브러리가 어떤 상황에서 사용될지를 정의합니다. 대표적인 범위는 compile, provided, runtime, test 등이 있습니다. 이 중에서 의존성을 runtime으로 설정하면, 빌드 시에만 포함되고 실행 시에 필요할 때 사용할 수 있습니다.

 

다음은 Maven의 주요 범위입니다:

  • compile: 기본 범위로, 모든 컴파일 및 런타임에서 사용됩니다.
  • provided: 컴파일 시에는 필요하지만, 배포 시에는 제공된 환경에서 사용됩니다.
  • runtime: 런타임에만 필요하며, 컴파일 타임에는 필요하지 않습니다.
  • test: 테스트 시에만 필요한 의존성입니다.

5. Jenkins에서 빌드 시 문제 해결하기

Jenkins와 같은 CI/CD 도구를 사용할 때, 로컬 환경과 다른 설정으로 인해 ClassNotFoundError가 발생할 수 있습니다. 이 경우, Jenkins의 빌드 로그를 확인하여 어떤 라이브러리가 누락되었는지 확인해야 합니다. 빌드 환경이 로컬과 다르므로, pom.xml 파일의 의존성을 다시 점검해야 합니다.

 

또한, Jenkins에서 빌드할 때 사용하는 JDK 및 Maven 버전이 로컬과 동일한지 확인하는 것이 중요합니다. 버전 차이가 문제가 될 수 있으며, 필요하다면 Jenkins 서버의 JDK 및 Maven 버전을 업데이트해야 합니다.

6. FAQ

Q1: ClassNotFoundError가 발생하면 어떻게 해야 하나요?

A1: ClassNotFoundError가 발생하면 우선 빌드 로그를 확인하여 누락된 클래스를 찾아야 합니다. 이후 pom.xml에서 해당 의존성을 추가하고 다시 빌드해보세요.

Q2: Maven의 scope를 어떻게 변경하나요?

A2: Maven의 scope를 변경하려면 pom.xml 파일에서 해당 의존성과 함께 scope 속성을 설정하면 됩니다. 예를 들어, runtime으로 설정할 수 있습니다.

7. 결론

SpringBoot에서 JSON 라이브러리와 관련된 ClassNotFoundError는 다양한 원인으로 발생할 수 있습니다. 이 글에서 설명한 내용들을 참고하여 의존성을 올바르게 추가하고, Jenkins와 같은 CI/CD 환경에서 빌드를 수행하는 데 필요한 설정을 점검하면 효과적으로 문제를 해결할 수 있을 것입니다. 개발자들은 이러한 오류를 통해 더욱 깊이 있는 이해와 경험을 쌓을 수 있습니다.

 

마지막으로, 오류를 예방하기 위해서는 항상 라이브러리의 문서화 및 업데이트를 체크하고, 의존성 관리에 신경 써야 합니다. JSON 라이브러리에 대한 이해를 높이고, SpringBoot 프로젝트를 더욱 효과적으로 관리하기 위해 필요한 지식을 습득하는 것이 중요합니다.

👉SpringBoot에서 JSON 라이브러리 ClassNotFound 오류 해결 바로보기
반응형