java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoadListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoadListener
几天来我一直在为这个问题苦苦挣扎(这就是我提供 GitHub link 的原因)。
这是堆栈跟踪:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoadListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoadListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
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.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我只会指出,我使用 Tomcat 7 并且 运行 来自 Eclipse 中“服务器”选项卡的服务器。
我已经阅读了互联网上关于它的所有内容。提供的最常见解决方案是:
"Go to project properties -> Deployment Assembley, click Add... ,
select Java Build Path Entries and add the Maven Dependencies to the
Web Deployment Assembly."
它对我不起作用,就像我目前在 Internet 上看到的其他解决方案一样。我很绝望。
我正在为我的项目提供 GitHub link:https://github.com/wiewioraseb/beer-blog-hiccup.git
我已经尝试将其导出到另一台计算机,但在另一台计算机上 运行ning 时仍然出现相同的错误。
link 说:
在部署环境中,只需确保您的服务器类路径包含 Spring jar 库(例如 spring-2.5.6.jar)。
对于Spring3,ContextLoaderListener被移动到spring-web.jar,您可以从Maven中央仓库获取库。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
您确定您的构建路径(在 eclipse 中)实际上包含所有依赖项(在本例中特别是 spring-web 和 spring-webmvc)?
如果您构建一个 *.war 文件,使用 mvn clean install
,如果您解压它,这些库可能会包含在其中。
但是,这与 Eclipse 不同。因此,我建议在您的目录中使用 运行ning mvn clean install eclipse:clean eclipse:eclipse
。然后在 Eclipse 中刷新项目并清理它(项目 -> 清理)。
要查看库是否正确部署,请双击您的服务器并转到此位置(在您的工作区文件夹中):
并检查 WEB-INF/lib
文件夹中的依赖项(*.jar 文件)。
一般来说,这可以解决我的问题。你应该:
- 在 Eclipse 中关闭服务器
- 右键单击 -> 清理 -> 清理 Tomcat 工作目录
- 运行上面的命令
- 启动服务器
class 到 bootstrap Spring 根上下文的正确侦听器是 ContextLoaderListener,而不是 ContextLoadListener!所以在 web.xml 中应该是:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
几天来我一直在为这个问题苦苦挣扎(这就是我提供 GitHub link 的原因)。 这是堆栈跟踪:
SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoadListener
java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoadListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1702)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1547)
at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:532)
at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:514)
at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:142)
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.run(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
我只会指出,我使用 Tomcat 7 并且 运行 来自 Eclipse 中“服务器”选项卡的服务器。
我已经阅读了互联网上关于它的所有内容。提供的最常见解决方案是:
"Go to project properties -> Deployment Assembley, click Add... , select Java Build Path Entries and add the Maven Dependencies to the Web Deployment Assembly."
它对我不起作用,就像我目前在 Internet 上看到的其他解决方案一样。我很绝望。
我正在为我的项目提供 GitHub link:https://github.com/wiewioraseb/beer-blog-hiccup.git 我已经尝试将其导出到另一台计算机,但在另一台计算机上 运行ning 时仍然出现相同的错误。
link 说: 在部署环境中,只需确保您的服务器类路径包含 Spring jar 库(例如 spring-2.5.6.jar)。
对于Spring3,ContextLoaderListener被移动到spring-web.jar,您可以从Maven中央仓库获取库。
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
您确定您的构建路径(在 eclipse 中)实际上包含所有依赖项(在本例中特别是 spring-web 和 spring-webmvc)?
如果您构建一个 *.war 文件,使用 mvn clean install
,如果您解压它,这些库可能会包含在其中。
但是,这与 Eclipse 不同。因此,我建议在您的目录中使用 运行ning mvn clean install eclipse:clean eclipse:eclipse
。然后在 Eclipse 中刷新项目并清理它(项目 -> 清理)。
要查看库是否正确部署,请双击您的服务器并转到此位置(在您的工作区文件夹中):
并检查 WEB-INF/lib
文件夹中的依赖项(*.jar 文件)。
一般来说,这可以解决我的问题。你应该:
- 在 Eclipse 中关闭服务器
- 右键单击 -> 清理 -> 清理 Tomcat 工作目录
- 运行上面的命令
- 启动服务器
class 到 bootstrap Spring 根上下文的正确侦听器是 ContextLoaderListener,而不是 ContextLoadListener!所以在 web.xml 中应该是:
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>