我有一个“mavenized”webapp项目,我终于得到了我的文件.war 之后,我必须在Tomcat 6中部署它,但我无法弄清楚上下文,我得到了这个错误:
GRAVE: Erreur lors de la configuration de la classe d'écoute de l'application (application listener) application.util.SessionListener
java.lang.ClassNotFoundException: application.util.SessionListener
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4153)
at org.apache.catalina.core.StandardContext.start(StandardContext.java:4709)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardHost.start(StandardHost.java:822)
at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1060)
at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:463)
at org.apache.catalina.core.StandardService.start(StandardService.java:525)
at org.apache.catalina.core.StandardServer.start(StandardServer.java:759)
at org.apache.catalina.startup.Catalina.start(Catalina.java:595)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
SessionListener类的实现如下:
package application.util;
import javax.servlet.http.HttpSessionEvent;
import javax.servlet.http.HttpSessionListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
public class SessionListener implements HttpSessionListener {
private final Log log = LogFactory.getLog(this.getClass());
public void sessionCreated(HttpSessionEvent event) {
log.debug("session créée : " + event.getSession().getId());
}
public void sessionDestroyed(HttpSessionEvent event) {
}
}
的web.xml
<!-- Spring intialisation -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>
<listener>
<listener-class>
application.util.SessionListener
</listener-class>
</listener>
我使用与DB的适当连接配置了Tomcat的文件context.xml。 我使用Tomcat 6和JDK 1.7
答案 0 :(得分:0)
你的web.xml中可能有这样的声明:
<web-app ...>
<listener>
<listener-class>application.util.SessionListener</listener-class>
</listener>
</web-app>
这意味着您的SessionListener
课程(您在WEB-INF/classes
中找到的)必须位于包application.util
中。例如。编译器需要将其编译为WEB-INF/classes/application/util/SessionListener.class
(不要只是将其移动到那里)。
或者更改web.xml中的声明以省略application.util.
部分
编辑:我不确定如何阅读您的评论 - 它可能已经在该软件包中。如果确实如此,还有两个选择:
SessionListener
类是否引用了其所需的其他类(例如成员)。如果缺少 ,则JVM也无法实例化类SessionListener
的对象,从而导致类似的问题。Log
和LogFactory
个引用只需几分钟,然后重试。即使它不能这个,最好通过尝试将其排除,而不是说“不能”。