동적 웹 프로젝트이기도 한 Maven 프로젝트를 실행 중입니다. Maven에서 모든 Spring 라이브러리를 사용했습니다. 을 만들었지 web.xml
만 Tomcat 7 서버를 시작하면 다음 메시지가 나타납니다.
INFO: validateJarFile(C:\Users\mibvzd0\workspace\.metadata\.plugins\
org.eclipse.wst.server.core\tmp2\wtpwebapps\hapi_hl7\WEB-INF\lib\
servlet-api-2.4.jar) - jar not loaded.
See Servlet Spec 2.3, section 9.7.2. Offending class: javax/servlet/Servlet.class
에서 서블릿을 삭제하려고했지만 webapp/lib
작동하지 않았습니다. 제 경우에 어떻게해야하는지 알려주세요.
답변
servlet API .jar 파일은 웹앱에 포함되어서는 안됩니다. 컨테이너는 이미 클래스 경로에 이러한 클래스를 가지고 있기 때문에이 jar에 포함 된 인터페이스를 구현합니다.
종속성은 Maven pom provided
의 기본 compile
범위가 아닌 범위에 있어야합니다 .
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
<version>3.1.0</version>
<scope>provided</scope>
</dependency>
답변
서블릿 api jar 파일이 컨테이너에 이미로드되어 있고 lib
디렉토리 에서 다시로드하려고하면이 경고 메시지가 표시됩니다 .
Servlet 사양에 따르면 webapps 디렉토리에 servlet.jar 을 사용할 수 없습니다
lib
.
- 디렉토리
servlet.jar
에서 간단히 제거하여 경고 메시지를 제거 하십시오lib
. lib
디렉토리 에서 jar를 찾지 못한 경우 빌드 경로를 스캔하고 jar를 제거하십시오.
C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\project\WEB-INF\lib
Maven 프로젝트를 실행하는 경우 컨테이너가 이미 자체 서블릿 jar를 제공 했으므로 pom.xml의 javax.servlet-api
범위 provided
로 종속성을 변경하십시오 .
답변
이를 수정하려면 범위 를 제공됨으로 설정하십시오 . 이것은 Maven이 컴파일 및 테스트를 위해서만 코드 servlet-api.jar를 사용하도록 지시하지만 WAR 파일에는 포함하지 않습니다. 배포 된 컨테이너는 런타임에 servlet-api.jar를 “제공”합니다.
<dependency>
<groupId>javax.servlet</groupId>
<artifactId>servlet-api</artifactId>
<version>2.5</version>
<scope>provided</scope>
</dependency>
답변
문제가되는 jar 파일을 추적하는 데 유용한 다음 Windows 명령 줄을 찾을 수 있습니다. 폴더의 모든 jar에있는 모든 클래스 파일의 색인을 생성합니다. 배포 된 앱의 lib 폴더 내에서 실행 한 다음 index.txt 파일에서 문제가되는 클래스를 검색합니다.
for /r %X in (*.jar) do (echo %X & jar -tf %X) >> index.txt
답변
제공 :이 훨씬 컴파일처럼,하지만 당신은 나타냅니다 기대 JDK 또는 컨테이너가 런타임에 의존성을 제공 할 수 있습니다. 예를 들어 Java Enterprise Edition 용 웹 애플리케이션을 빌드 할 때 웹 컨테이너가 해당 클래스를 제공 하기 때문에 Servlet API 및 관련 Java EE API 에 대한 종속성을 제공된 범위로 설정 합니다 . 이 범위는 컴파일 및 테스트 클래스 경로에서만 사용할 수 있으며 전 이적이지 않습니다.
답변
저는이 문제로 어려움을 겪고 있으며 수많은 “솔루션”을 시도했습니다.
그러나 결국 작동하고 실제로 수행하는 데 몇 초가 걸리는 유일한 방법은 새 서버 인스턴스를 삭제하고 다시 추가하는 것입니다 !
기본적으로 Eclipse에서 Servers 아래의 Tomcat 서버를 마우스 오른쪽 버튼으로 클릭하고 삭제했습니다. 다음으로 새 Tomcat 서버를 추가했습니다. 응용 프로그램을 정리하고 다시 배포하고이 오류를 제거했습니다.
답변
다음 디렉토리에서 jar 파일 el-api.jar를 확인하십시오. : C : \ apache-tomcat-7.0.39 \ lib \ el-api.jar이 있으면 웹 응용 프로그램 WEB-INF \ lib \의이 디렉토리에 있습니다. el-api.jar 항아리를 제거해야합니다.