当我尝试在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
答案 0 :(得分:28)
1)右键单击项目,然后选择“属性”。
2)选择“部署程序集”
3)点击右侧的“添加按钮”。
4)从Directive Type菜单中选择“ Java Build Path Entries ”,然后点击“Next”按钮。
5)从Java Build Path Entries菜单中选择“ Maven Dependencies ”,然后单击“Finish”。
6)删除旧服务器实例并创建新服务器实例,然后在服务器上运行该项目......
答案 1 :(得分:6)
你遗漏了一些像struts-spring plugin
使用类似的版本来获得清晰的输出
答案 2 :(得分:2)
servlet-api.jar
不在您的类路径中。检入servlet容器的lib
文件夹。如果您使用的是Tomcat,那通常会在C:/apache-tomcat-7.XX/lib
中。如果不存在,请下载并添加。
答案 3 :(得分:1)
检查所有Jars是否已正确配置。 清理Eclipse服务器。 清理Tomcat工作目录。 转到菜单项目 - >清洁。 重启服务器和应用程序。
答案 4 :(得分:1)
从服务器中删除您的应用程序,然后重新部署您的应用程序。
答案 5 :(得分:0)
如果您已经为javax.servlet
部署了JavaEE包的库,那么您就犯了一个错误,Web服务器已经包含了与您的servlet规范API相对应的库和加载。
答案 6 :(得分:0)
如果您在Eclipse中导入了其他人的项目,则在类路径中删除并添加servlet-api.jar
,因为您的系统上servlet-api.jar的路径可能不同。
之后清理项目并再次运行。
答案 7 :(得分:0)
这会经常发生在我身上。即使依赖是正确的,即使我以前在Eclipse中启动服务器没有问题。但是,如果我在服务器运行时更改代码,有时我会遇到这个问题。
我会从服务器中删除该应用程序。启动服务器。停止服务器。然后,重新运行'mvn eclipse:eclipse -Dwtpversion = 2.0“(可能类似于Project-> Clean)。
然后,点击F5刷新项目。将应用程序添加到服务器。启动服务器。
有时在服务器运行时更改代码或者错误地停止代码,这也会阻塞端口(有时需要关闭eclipse或重新启动计算机)。
答案 8 :(得分:0)
每当我从SVN存储库中检出我的项目时,我遇到了类似的问题,这对我有用: -
1)清理服务器。的 TopBarMenu>项目>清洁强>
2)禁用自动构建。 TopBarMenu>项目>自动取消选中修建
3)手动构建项目。 TopBarMenu>项目>构建
可替换地, 右键单击要构建的项目并单击构建项目(上面的刷新)。 (注意:如果项目设置为自动构建,则隐藏此选项)
4)运行项目。
答案 9 :(得分:0)
(在我的案例中有效) 这也是它工作的情况之一, 去 Windows的> ShowView->服务器。 展开Tomcat(例如) - >删除相关的jar 重建项目。
@Rishi Gautam给出的工作解决方案应该是真的。
答案 10 :(得分:0)
如果您已使用所有必需的jar正确配置和构建项目并仍然得到相同的错误,那么您可能错过了创建classes文件夹。如果我们使用现有项目设置并对其进行配置,则应根据项目要求手动输入默认输出文件夹。在我的例子中,eclipse将默认输出文件夹提供给/ bin,但它配置为project_name / WEB-INF / classes。所以我把它改成了project_name / WEB-INF / classes