기록과 정리의 공간

[Spring] 이클립스에서 Tomcat - Choose an existing server 비활성화 문제 본문

라이브러리&프레임워크/Spring

[Spring] 이클립스에서 Tomcat - Choose an existing server 비활성화 문제

딸기맛도나쓰 2020. 12. 16. 18:08

  • 실습 환경
    • 이클립스 STS
    • JDK 1.8
    • Tomcat 8.5
    • Spring 5
  1. Spring Legacy Project > Spring MVC Project로 새프로젝트 생성 후, Java Config를 이용하기 위해 web.xml, servlet-context.xml, root-context.xml을 삭제하고, 대신 각 파일에 해당하는 config클래스들을 생성해 설정해줬다.

  2. 우선적으로 Spring Legacy Project로 생성된 프로젝트는 서블릿 2.5버전을 사용하는데, Java Config를 이용하려면 서블릿 3.0이상으로 버전을 변경해주어야 한다. 따라서 pom.xml파일의 일부를 아래와 같이 수정해줬다. (문제의 원인)

    • maven repository에서 확인해보니 4.0.1까지 나와있길래 아무생각없이 4.0.1 버전으로 변경해줬다.
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>4.0.1</version>
</dependency>
  1. 프로젝트가 정상 작동하는지 확인하기 위해 톰캣을 통해 실행하려는데, 아래 이미지와 같이 'Choose an existing server'부분이 비활성화 되어 실행할 수가 없었다. (문제가 발생한 단계)
    • 2번에서 설정해준 servlet스펙(4.0)과 현재 톰캣 버전(8.5)가 맞지 않아 발생하는 문제인 것 같았다.


해결 과정

  • [이 곳]에서 톰캣 버전별 각종 스펙을 확인할 수 있다.
  1. 위 링크에서 확인했듯이 톰캣 8.5에 맞는 서블릿 스펙인 3.1으로 pom.xml을 수정해주고, Maven > Update Project를 해줬는데도 여전히 비활성화 상태였다;
<dependency>
    <groupId>javax.servlet</groupId>
    <artifactId>javax.servlet-api</artifactId>
    <version>3.1.0</version>
    <scope>provided</scope>
</dependency>

  1. 프로젝트 우클릭 > Properties > Project Facets로 들어가보니 Dynamic Web Module이 4.0로 설정되어있었다.

이를 pom.xml에서 설정해준 서블릿스펙에 맞게 3.1로 바꿔주려고 하니, 아래와 같이 'Cannot change version of project facet Dynamic Web Module to 3.1.'이라는 메시지가 뜨면서 적용이 불가능했다..

 

3. 위와 같은 오류 메시지가 뜨는 경우, Dynamic Web Module 버전 변경 방법. (문제 해결!)

  • 해당 프로젝트 경로 내의 .settings로 이동하면 org.eclipse.wst.common.project.facet.core 라는 XML파일이 있다.

  • 해당 파일을 열어 표시한 부분을 원하는 버전의 Dynamic Web Module버전으로 설정하고 저장해준 뒤, 이클립스로 돌아와 Maven > Update Project

  • 다시 Project Facets으로 들어가 Dynamic Web Module의 버전을 확인해보면 위에서 설정해준 버전과 동일하게 설정되어있는 것을 확인할 수 있고, 다시 Run On Server로 들어가보면 'Choose an existing server'가 활성화되어 톰캣을 통해 프로젝트를 실행할 수 있다.

Comments