한바다
[Tocat_Error]Server Tomcat v10.1 Server at localhost failed to start. 본문
[Tocat_Error]Server Tomcat v10.1 Server at localhost failed to start.
한바다진화 2025. 2. 23. 23:50✅ 오류/에러 상황[Error]
이클립스에서 서블릿 코드 작성 후 톰캣을 실행 하였는데 아래와 같은 에러 얼럿창이 떳다!

📌 시도해 본 내용
- 서버 포트가 충돌하고 있는지 확인
명령 프롬포트(CMD) 실행(win+R -> cmd -> Enter)
[코드]
netstat -ano | findstr :8080

만약 LISTENING 상태인 프로세스가 보인다면, 8080 포트가 사용중임
netstat 명령어로 확인된 pid(프로세스 ID)를 기억한 뒤 명령프롬포트 관리자 권한으로 실행하여
taskkill /PID <PID번호> /F

다시 Tomcat을 실행해 보고 오류가 해결되었는 지 확인
-Tomcat 서버 설정이 꼬였을 가능성
톰캣 서버 설정파일이 잘못되었거나, 배포 과정에서 문제가 발생했을 가능성이 있음
1.이클립스에서 Tomcat서버를 제거 후 다시 추가
wiondow→show View →Server

2.Tomcat v10.1 Server at localhost를 우클릭 → Delete

3. 이클립스에서 Project Explorer에서 Servers 폴더를 삭제
4. 이클립스를 완전히 종료한 후 다시 실행
5. Tomcat을 다시 추가(New →Server →Apache →Tomdcat v10.1)
6. 프로젝트를 다시 Add and Remove로 Tomcat에 추가
7. 다시실행(Run As → Run on Server)

톰캣 서버 설정은 잘했으나, 위와 같이 서블릿 관련 라이브러리를 import하지 못하는 에러 발생!
보통 서블릿 API 라이브러리가 없을 때 발생하는 문제
@WebServlet, HttpServletRequest, HttpServletResponse 등은 Java EE(Servlet API)에서 제공하는 클래스 인데
이클립스 프로젝트에서 "서블릿 라이브러리"가 없으면 자동으로 import되지 않는다
해결방법은 프로젝트에 "Servlet API"라이브러리를 추가 하는 것!!
1.이클립스 프로젝트 우클릭→Properties 선택 또는 Libraries에서 아래와 같이 진행

2. 왼쪽 메뉴에서 Java Build Path → Libraries 탭 선택

3. Add Library... 버튼 클릭
4. Server Runtime 선택 후 Next 클릭

5. Apache Tomcat v10.1 선택 후 Finish 클릭

6. Apply and Close 클릭 후 프로젝트 다시 실행
🔹 이제 @WegServlet, HttpServletRequest, HttpServletResponse 가 정상적으로 import 됨!!
- 프로젝트가 Tomcat에 정상적으로 배포되지 않았을 가능성
이클립스에서 프로젝트가 Tomcat에 올바르게 배포되지 않은 경우 발생할 수 있음
🔹 해결방법
1.프로젝트 Clean & Build 실행 > 프로젝트 선택 후 OK

2. Tomcat에서 프로젝트 제거 후 다시 추가
Servers뷰에서 Tomcat v10.1 Server를 우클릭 > Add and Remove..클릭> 프로젝트를 제거 후 다시 추가> Tomcat 서버 다시 실행 (Run As → Run on Server)
-Tomcat이 실행될 때 충돌하는 로그 파일 정리
이전에 실행되던 Tomcat 관련 로그 파일이 삭제되지 않아 충돌할 가능성 있음
🔹 해결방법
1.Tomcat work 디렉토리 삭제
: Servers 폴더에서 해당 Tomcat 서버의 work 폴더 삭제
2. Tomcat temp 디렉토리 삭제
: Tomcat 설치 폴더 → temp/ 폴더 삭제
-> temp\ 폴더 (톰캣 실행 중 생성되는 임시 파일)
✅ 톰캣이 동작하면서 생성하는 임시 파일 저장소
: 보통 비워두면 자동으로 삭제됨
: 톰캣 실행 중 강제종료되면 이 폴더를 수동으로 삭제하고 다시 실행하면 문제 해결됨
: 톰캣이 정상적으로 실행되지 않을 때 temp폴더를 삭제하고 재시작하면 해결되는 경우가 많음!
3. Tomcat logs 디렉토리 삭제
: Tomcat 설치 폴더 → logs/ 폴더 삭제
-> logs\ 폴더 (서버 실행 및 에러 로그 저장)
✅ 톰캣 실행 과정에서 발생하는 로그 파일 저장
✅ 오류 발생 시 catalina.out을 확인하면 원인 분석 가능!
- xml 파일설정과 어노테이션(@webServlet) url 맵핑이 겹치면서 에러가 발생
서블릿을 개발할 때, @webServlet 어노테이션과 web.xml 파일의 <servlet-mapping>을 동시에 사용하여 동일한 URL
패턴을 지정하면, 서블릿 컨테이너는 어떤 매핑을 우선해야 할 지 혼란을 겪게 됨!
🔹 해결방법
1. 하나의 매핑 방식만 사용하기
*어노테이션 사용 : @webServlet 어노테이션을 사용하여 서블릿을 매핑하고, web.xml에서는 해당 서블릿에 대한 매핑 을 제거 한다
* web.xml 사용 : web.xml 파일에서 <servlet> 및 <servlet-mapping>을 사용하여 서블릿을 매핑하고, 서블릿 클래스의
@webServlet 어노테이션을 제거하거나 주석 처리한다.
2. web.xml 의 metadata-complete 속성 설정
*web.xml 파일의 <web-app> 태그에 metadata-complete="true" 를 설정하면, 서블릿 컨테이너는 어노테이션 기반의 매핑을 무시하고 web.xml에 정의된 매핑만을 사용한다.
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
version="4.0"
metadata-complete="true">
<!-- 서블릿 및 매핑 설정 -->
</web-app>
이렇게 설정하면 어노테이션과 web.xml 간의 충돌을 방지할 수 있다.
💡 위 시도해본 결과 마지막 어노테이션과 xml파일의 충돌로 해당 오류를 해결할 수 있었다. 😊🔥 😊🔥 😊🔥 😊🔥
'servlet' 카테고리의 다른 글
[스프링부트]dump, dumpstream. & 깃 브랜치 연결 오류 (0) | 2024.06.25 |
---|---|
스프링부트 실행시 html자원을 찾지 못하는 오류 (0) | 2024.06.24 |
스프링부트 오류-Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. (0) | 2024.06.21 |
[JSP]SQL Exception; error code 내부 표기로 변환할 수 없습니다 & 로그로 정보 확인 하기 (0) | 2024.06.20 |
[Mapper]스피링부트 구조 이해와 조별 깃 연결 (0) | 2024.06.19 |