Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30
Archives
Today
Total
관리 메뉴

한바다

[Tocat_Error]Server Tomcat v10.1 Server at localhost failed to start. 본문

servlet

[Tocat_Error]Server Tomcat v10.1 Server at localhost failed to start.

한바다진화 2025. 2. 23. 23:50

✅ 오류/에러 상황[Error]

이클립스에서 서블릿 코드 작성 후 톰캣을 실행 하였는데 아래와 같은 에러 얼럿창이 떳다!

detail클릭시 에러 내용 :Server Tomcat v10.1 Server at localhost failed to start.

📌 시도해 본 내용

- 서버 포트가 충돌하고 있는지 확인

명령 프롬포트(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파일의 충돌로 해당 오류를 해결할 수 있었다. 😊🔥 😊🔥 😊🔥 😊🔥