사설은 머 간단히 하고 이클립스에서 Spring을 얹어서 Tomcat으로 띄우는데 Tomcat 콘솔에 아래와 같은 오류가 찍혔습니다.
정 보: validateJarFile(D:\Project\STS\.metadata\.plugins\org.eclipse.wst.server.core\tmp1\wtpwebapps\Example\WEB-INF\lib\com.springsource.javax.servlet-2.5.0.jar) - jar not loaded. See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
이 문제는 javax.servlet.Servlet.class가 중복으로 로드되어서 발생한 문제입니다. <TOMCAT_HOMT>\lib 폴더 안에 servlet-api.jar안에 javax.servlet.Servlet.class가 있는데 프로젝트의 lib에도 javax.servlet.Servlet.class가 있어서 발생한 문제이므로 프로젝트의 WEB-INF/lib에 있는 javax.servlet-2.5.0.jar를 삭제해 주어야 합니다.
의존성 라이브러리 관리를 위해서 Maven을 사용하고 있었는데 SpringSource Enterprise Bundle Repository에서 Spring Framework 전체를 한번에 끌어오고 있었기 때문에 아래와 같이 exclusions을 사용해서 javax.servlet을 제거했습니다.
이렇게 프로젝트의 라이브러리에서 javax.servlet을 제거하고 Tomcat을 실행하면 앞의 나오던 오류메시지가 없어진 것을 볼 수 있습니다.
질문있습니다
pom파일에서 서블릿 자르 파일을 삭제하게 되면 메이븐 골 실행시 컴파일 에러가 발생하지 않나요
만야 자바 소스중 서블릿 관련 클래스를 참조하게 된다면 빌드시 오류가 발생할 것 같아서 질문드렸습니다
혹 이런 경우에는 어떻게 해야 할까요?
이클립스 톰켓을 사용하지 않아야 할까요?
그런경우라면 메이븐에서 해당 부분을 provided 스코프로 설정하면 될것 같습니다.
좋은 정보 감사합니다.