严重:配置类org.apache.catalina.deploy.ApplicationListener的应用程序侦听器时出错

在我尝试在Eclipse中运行项目的web.xml时,这是我的错误。

这是我在尝试运行项目网页时遇到的主要错误

 ***SEVERE: Error configuring application listener of `class` org.apache.catalina.deploy.ApplicationListener@1864160e java.lang.NoClassDefFoundError: javax/servlet/ServletRequestListener**** at java.lang.ClassLoader.findBootstrapClass(Native Method) at java.lang.ClassLoader.findBootstrapClassOrNull(`ClassLoader`.java:927) at java.lang.ClassLoader.loadClass(ClassLoader.java:298) at java.lang.ClassLoader.loadClass(ClassLoader.java:296) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:301) at java.lang.ClassLoader.loadClass(ClassLoader.java:248) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1629) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559) at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1559) at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1549) 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) Sep 10, 2013 6:37:24 PM org.apache.catalina.core.StandardContext listenerStart 

你错过了一些像struts-spring plugin这样的jar子

使用类似的版本来获得清晰的输出

1)右键单击项目,然后选择“ 属性 ”。

2)选择“ 部署程序集

3)单击右侧的“ 添加按钮 ”。

4)从Directive Type菜单中选择“ Java Build Path Entries ”,然后单击“Next”按钮。

5)从Java Build Path Entries菜单中选择“ Maven Dependencies ”,然后单击“Finish”。

6)删除旧服务器实例并创建新服务器实例然后在服务器上运行项目…

servlet-api.jar不在您的类路径中。 检入servlet容器的lib文件夹。 如果您使用的是Tomcat,那么通常位于C:/apache-tomcat-7.XX/lib 。 如果不存在,请下载并添加。

检查所有Jars是否已正确配置。 清理Eclipse服务器。 清理Tomcat工作目录。 转到菜单项目 – >清洁。 重启服务器和应用程序。

从服务器中删除应用程序,然后重新部署应用程序。

如果您已经为javax.servlet部署了库,这是JavaEE包的一部分,那么您就犯了一个错误,Web服务器已经包含了与您的servlet规范API相对应的那些库和加载。

如果您在Eclipse中导入了其他人的项目,则在类路径中删除并添加servlet-api.jar ,因为servlet-api.jar的路径可能在您的系统上有所不同。 之后清理项目并再次运行。

这会经常发生在我身上。 即使依赖是正确的,即使我以前在Eclipse中启动服务器没有问题。 但是,如果我在服务器运行时更​​改代码,有时我会遇到此问题。

我会从服务器中删除该应用程序。 启动服务器。 停止服务器。 然后,重新运行’mvn eclipse:eclipse -Dwtpversion = 2.0“(可能类似于Project-> Clean)。

然后,按F5刷新项目。 将应用程序添加到服务器。 启动服务器。

有时在服务器运行时更​​改代码或者如果它被错误地停止,这也会阻塞端口(有时需要关闭eclipse或重新启动我的计算机)。

每当我从SVN存储库中检出我的项目时,我遇到了类似的问题,这对我有用: –

1)清理服务器。 TopBarMenu>项目>清除

2)禁用自动构建。 TopBarMenu>项目>取消选中自动生成

3)手动构建项目。 TopBarMenu>项目>构建

或者, 右键单击要构建的项目然后单击“构建项目”(上面的刷新) 。 (注意:如果项目设置为自动构建,则隐藏此选项)

4)运行项目。

(它适用于我的情况)这也是它工作的情况之一,转到Windows-> ShowView-> Servers。 展开Tomcat(例如) – >删除相关的jar重建项目。

对于这种由@Rishi Gautam给出的工作解决方案应该是真的。

如果您已使用所有必需的jar正确配置和构建项目并仍然得到相同的错误,那么您可能错过了创建classes文件夹。 如果我们使用现有项目设置并对其进行配置,则应根据项目要求手动输入默认输出文件夹。 在我的例子中,eclipse将默认输出文件夹提供给/ bin,但它配置为project_name / WEB-INF / classes。 所以我把它改成了project_name / WEB-INF / classes