나는 spring 3.1.0.RELEASE 를 사용하고 있으며 내 서블릿 컨테이너는 tomcat 7 이고 IDE는 eclipse indigo
이고 DispatcherServlet 을 포함하는 jar spring-webmvc-3.1.0.RELEASE.jar
는 lib 폴더에 존재하지만 아직 때 응용 프로그램을 실행하면 예외가 발생합니다.
java.lang.ClassNotFoundException: org.springframework.web.servlet.DispatcherServlet
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1678)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1523)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:525)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:507)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:126)
at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1099)
at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1043)
at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:4957)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5284)
at org.apache.catalina.core.StandardContext$3.call(StandardContext.java:5279)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
이 예외가 발생하는 이유와 해결 방법을 알려주십시오.
편집 : 다음은 내 구성 파일입니다.
1- .springBeans :
<?xml version="1.0" encoding="UTF-8"?>
<beansProjectDescription>
<version>1</version>
<pluginVersion><![CDATA[2.9.0.201203011806-RELEASE]]></pluginVersion>
<configSuffixes>
<configSuffix><![CDATA[xml]]></configSuffix>
</configSuffixes>
<enableImports><![CDATA[false]]></enableImports>
<configs>
<config>src/main/webapp/WEB-INF/checkout-servlet.xml</config>
</configs>
<configSets>
</configSets>
</beansProjectDescription>
2- web.xml :
<web-app>
<display-name>Checkout</display-name>
<servlet>
<servlet-name>checkout</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>checkout</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
</web-app>
3- checkout-servlet.xml :
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd">
<context:component-scan base-package="com.myapp"/>
<bean id="myService" class="com.myapp.MyService"/>
</beans>
또한 응용 프로그램의 페이지에 액세스하려고 할 때 예외가 발생합니다.
HTTP Status 404 - Servlet checkout is not available
type Status report
message Servlet checkout is not available
description The requested resource (Servlet checkout is not available) is not available.
Apache Tomcat/7.0.22
답변
배포 어셈블리에 “Maven 종속성”을 추가해야합니다.
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.
- 배포 어셈블리를 클릭합니다.
- 추가를 클릭
- “Java 빌드 경로 항목”을 클릭하십시오.
- Maven 종속성 선택 “
- 마침을 클릭합니다.
다시 빌드하고 배포
참고 : 이것은 비 Maven 프로젝트 에도 적용됩니다 .
답변
두 가지 가능한 답변 :
1- lib에 spring-beans 및 spring-context jar를 포함하지 않았습니다. maven을 사용한다면 (많은 도움이 될 것입니다) 그 두 줄이면 충분할 것입니다.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.1.0.RELEASE</version>
</dependency>
2- 필요한 jar가 클래스 경로에 있지만 tomcat에 배포되지 않았습니다.
답변
안녕하세요, Idea Intellij와 Spring 4에서 동일한 문제가 발생했습니다. 문제를 해결하고 답변을 공유하고 싶었습니다.
나는 tomcat 7 / idea intellij 13 / spring 4를 사용합니다.
pom.xml 종속성
<properties>
<spring.version>4.0.5.RELEASE</spring.version>
</properties>
<dependencies>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
enter code here
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-jdbc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>${spring.version}</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
<version>${spring.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.11</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.7.2</version>
</dependency>
<dependency>
<groupId>commons-dbcp</groupId>
<artifactId>commons-dbcp</artifactId>
<version>1.4</version>
</dependency>
</dependencies>
Idea Intellij에서는 파일-> 프로젝트 설정-> 아티팩트로 이동해야합니다. 그때
정리-> 프로젝트 다시 빌드-> 아티팩트를 빌드하면 모든 것이 정상입니다 …
답변
이것은 나를 위해 문제를 해결합니다. 쉽고 간단하게 설명 할 수 있습니다.
1 단계
- 프로젝트를 마우스 오른쪽 버튼으로 클릭하십시오.
- 속성을 클릭하십시오.
2 단계
- 배포 어셈블리 탭을 클릭하십시오.
- 추가 …를 클릭하십시오.
3 단계
- Java 빌드 경로 항목을 클릭하십시오.
4 단계
- Maven 종속성을 클릭하십시오.
- 마침 버튼 클릭
5 단계
- Spring MVC 애플리케이션을 Tomcat에 다시 배포
- Tomcat 다시 시작
- 목록 항목
답변
배포 어셈블리 에 항목이 있음을 발견했습니다 .
[persisted container] org.maven.ide.eclipse.maven2_classpath_container
나는 그것을 제거하고 maven dependencies
항목을 추가했으며 이제 정상적으로 작동합니다.
답변
이 모든 조언이 작동하지 않으면 서버 (Tomcat 등)를 다시 만들어야합니다. 그것은 내 문제를 해결했습니다.
답변
pom.xml에 아래 종속성을 포함하십시오.
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>{spring-version}</version>
</dependency>