강의

멘토링

커뮤니티

인프런 커뮤니티 질문&답변

doublej17님의 프로필 이미지
doublej17

작성한 질문수

스프링 MVC 1편 - 백엔드 웹 개발 핵심 기술

서블릿 오류

작성

·

117

0

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요.

1. 강의 내용과 관련된 질문을 남겨주세요.
2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요.
(자주 하는 질문 링크: https://bit.ly/3fX6ygx)
3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요.
(질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG)

질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요.
=========================================
[질문 템플릿]
1. 강의 내용과 관련된 질문인가요? (예/아니오)
2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오)
3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오)

[질문 내용]
servlet hello 부분

오류가 해결이 되지 않아 문의 남깁니다

 

Error starting ApplicationContext. To display the conditions report re-run your application with 'debug' enabled.

2025-01-09 11:09:37.846 ERROR 9180 --- [ main] o.s.boot.SpringApplication : Application run failed

org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'servletComponentRegisteringPostProcessor': Unexpected exception during bean creation; nested exception is java.lang.NoClassDefFoundError: javax/servlet/annotation/WebServlet

 

 

package hello.servlet;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.web.servlet.ServletComponentScan;


@ServletComponentScan // 서블릿 자동 등록
@SpringBootApplication
public class ServletApplication {

    public static void main(String[] args) {
       SpringApplication.run(ServletApplication.class, args);
    }

}

 

 

package hello.servlet.basic;



import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import java.io.IOException;

@WebServlet(name="helloServelet", urlPatterns = "/hello")
public class HelloServlet extends HttpServlet {

    @Override
    protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        System.out.println("HelloServlet.service");
    }
}

답변 2

0

안녕하세요. doublej17님, 공식 서포터즈 y2gcoder입니다.

다음 링크(클릭)을 참고해보시겠습니까?

감사합니다.

0

안녕하세요, 인프런 AI 인턴입니다. doublej17님.

Spring Boot 애플리케이션을 실행할 때 발생한 NoClassDefFoundError, 특히 javax.servlet.annotation.WebServlet에 관련된 에러는 Java Servlet API 라이브러리가 누락되어 발생할 수 있는 대표적인 오류입니다. 이를 해결하기 위해서는 필요한 라이브러리가 프로젝트에 포함되어 있는지를 확인해야 합니다.

오류 설명 및 해결 방법:

  1. 라이브러리 의존성 추가:

    • javax.servlet.annotation.WebServlet 클래스를 찾을 수 없다는 에러가 발생했습니다. 이는 프로젝트에 해당 라이브러리가 추가되지 않았을 때 주로 발생합니다.
    • build.gradle에 다음과 같은 의존성을 추가하여 해결할 수 있습니다:
      
      dependencies {
          implementation 'javax.servlet:javax.servlet-api:4.0.1'
      }
      

    • 만약 maven을 사용 중이라면 pom.xml에 다음 의존성을 추가하세요:
      
      <dependency>
          <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
          <version>4.0.1</version>
          <scope>provided</scope>
      </dependency>
      

    • 이후 Gradle 혹은 Maven 프로젝트를 리프레시하거나, 다시 빌드해 보세요.
  2. 빌드 툴 및 JDK 확인:

    • 현재 사용 중인 빌드 툴이 Gradle인지 Maven인지 확인하고, 의존성 추가 후 프로젝트를 다시 빌드합니다.
    • JDK 버전도 확인해 주세요. 최신 라이브러리는 주로 JDK 8 이상에서 지원됩니다.

같은 문제에 대한 유사한 질문과 해결 방법을 확인하실 수 있는 게시글을 추천드립니다:

위 게시물에서 인텔리제이와 같은 IDE 환경에서 설정을 바꾸는 방법에 대한 정보도 제공하고 있습니다. 에러가 지속된다면 IDE의 설정을 확인하세요.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.

doublej17님의 프로필 이미지
doublej17

작성한 질문수

질문하기