Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Eclipse에서 Tomcat실행시 validateJarFile - jar not loaded 메시지

자바에 대해서 업무를 하고 있지는 않지만 자바를 놓지 않으려고 하고 있었지만 그렇다고 딱히 깊게 학습하고 있지도 않았습니다. 모르고 있던 바는 아니었지만 주위에 자바를 하는 사람들이 워낙 많다보니 그냥 그사람들과 자바얘기를 지속적으로 접하고 듣는 것을 통해서 어느새 안주해버린 상태에 들어갔었던 듯 합니다. 제 자바 수준은 바닥인데 주변 사람들로부터 너무 높은 수준의 얘기만 듣다보니 어느 순간 현실을 제대로 자각하지 못했던 것 같고 그동안 자바로 프로젝트를 했음에도 항상 잘하는 친구들이 셋팅 다 해주면 그 위에서만 개발했기 때문에 막상 혼자 뭔가 해보려고 하니까 간단한 것도 제대로 못한다는 현실을 깨닫고 약간 당혹감에 빠져있는 상태입니다. 정작 중요한 것은 제가 원하는 걸 얼마나 만들어낼수 있느냐 하는 것인데요. 다시 초심으로 돌아가서 기초부터 다시 쌓아올라가려고 합니다.



사설은 머 간단히 하고 이클립스에서 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을 제거했습니다.


<dependency>
     <groupId>org.springframework</groupId>
     <artifactId>org.springframework.spring-library</artifactId>
     <type>libd</type>
     <version>${spring.version}</version>
     <exclusions>
         <exclusion>
             <groupId>javax.servlet</groupId>
             <artifactId>com.springsource.javax.servlet</artifactId>
         </exclusion>
     </exclusions>
</dependency>

이렇게 프로젝트의 라이브러리에서 javax.servlet을 제거하고 Tomcat을 실행하면 앞의 나오던 오류메시지가 없어진 것을 볼 수 있습니다.
2010/11/26 20:15 2010/11/26 20:15