我正在使用 spring 3.1.0.RELEASE ,我的servlet容器是 tomcat 7 ,我的IDE是 eclipse indigo jar spring-webmvc-3.1.0.RELEASE.jar ,其中包含 DispatcherServlet 存在于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
答案 0 :(得分:226)
您需要在部署程序集中添加“Maven依赖关系”
重新构建并再次部署
注意:这也适用于非maven 项目。
答案 1 :(得分:28)
两个可能的答案:
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上。
答案 2 :(得分:18)
大家好我和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>
在想法Intellij中,您需要转到文件 - &gt;项目设置 - &gt;文物。然后
清洁 - &gt;重建项目 - &gt;构建工件,一切都会好的......
答案 3 :(得分:10)
我发现在部署程序集中,有条目:
[persisted container] org.maven.ide.eclipse.maven2_classpath_container
我将其删除,并添加了maven dependencies
条目,现在工作正常。
答案 4 :(得分:7)
这解决了我的问题。简单易懂,简单易懂。
第1步
第2步
第3步
第4步
第5步
答案 5 :(得分:4)
我面临同样的问题。当我在本地看到maven存储库.m2文件夹(.... m2 \ repository \ org \ springframework \ spring-webmvc)时,我发现了两个3.2.0.RELEASE文件夹。所以我删除了一个。 然后我去了项目,右键点击 - >&gt;属性 - &gt;部署essembly-&gt;添加maven依赖项。 清理生成然后重新启动服务器。 然后加载了DispatcherServlet。
答案 6 :(得分:4)
如果所有这些建议都不起作用,您应该重新创建服务器(Tomcat或类似的)。这解决了我的问题。
答案 7 :(得分:3)
在pom.xml中包含以下依赖项
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>{spring-version}</version>
</dependency>
答案 8 :(得分:2)
您可以使用GlassFish服务器并解决错误。我尝试使用tomcat7和tomcat8,但是这个错误不断出现,但是用GlassFish解决了。我认为这是服务器的问题。
答案 9 :(得分:2)
在我的情况下,使用maven的更新项目实用程序后我遇到了麻烦。 我尝试了你建议的所有解决方法,但似乎没有任何工作。 最后,解决方案只是从服务器中删除项目以确保它是干净的,然后再次添加。然后它有效,我希望这个解决方案可以帮助你们。
答案 10 :(得分:1)
右键单击您的项目并选择属性。 单击Deployement Assembly。 点击添加 点击&#34; Java Build Path Entries&#34; 选择Maven Dependencies&#34; 单击“完成”。
答案 11 :(得分:1)
这可能对某人有用,所以我将其张贴在这里。
我缺少对pom.xml
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency>
答案 12 :(得分:0)
我按照以下步骤解决了:
这修复了部署程序集&#34;项目的设置。
答案 13 :(得分:0)
将jar文件从类路径移动到 web-inf / lib ,然后运行新的tomcat服务器。
答案 14 :(得分:0)
我找到了一个简单的解决方案, 只需在WEB-INF - &gt; lib文件夹中添加您的jar ..
答案 15 :(得分:0)
我在WebSphere中也遇到了同样的问题,但是即使我验证了Spring依赖项并在tomcat中也可以正常运行,却找不到解决方案。我最终卸载了该应用程序,但仍然出现错误,因此我认为WebSphere挂在了一些损坏的实例上。
要解决此问题,我必须重新安装该应用程序,将其停止,然后将其卸载,然后重新安装。
答案 16 :(得分:0)
对我来说,在pom.xml
中是一个错误-我将<scope>provided<scope>
设置为依赖项,这使得它们在mvn package
阶段不会被复制。
我的症状是OP发布的错误消息,并且运行程序包后,.war内的WEB-INF / lib路径中未包含jar。当我删除示波器时,罐子出现在输出中,并且现在全部加载正常。
答案 17 :(得分:0)