首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Tomcat 6上的部署webapp

Tomcat 6上的部署webapp
EN

Stack Overflow用户
提问于 2015-12-23 17:39:00
回答 1查看 131关注 0票数 0

我得到了一个"mavenized“webapp项目,在那之后我终于得到了我的文件.war,我把它部署到Tomcat6中,但我不能弄清楚上下文,我得到了这个错误:

代码语言:javascript
复制
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类的实现方式如下:

代码语言:javascript
复制
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

代码语言:javascript
复制
<!-- 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。我使用Tomcat6和JDK1.7

EN

回答 1

Stack Overflow用户

发布于 2015-12-23 18:19:58

您的web.xml中可能有一个声明,如下所示:

代码语言:javascript
复制
<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.部件

编辑:我不确定如何阅读你的评论-它可能已经在那个包里了。如果确实是这样,那么还有两个选择:

  • 确保在类或包名中没有拼写错误(如果您的web.xml类引用了它需要的其他类(例如,作为成员),那么在SessionListener SessionListener中很容易遗漏这一点)。如果它们丢失了,JVM也不能实例化SessionListener类的对象,导致类似的problems.
  • Even (或者特别是)在你对这个问题的评论之后:请检查评论中关于Jay's link的答案。通过这些步骤。您可能遗漏了一个不同的jar,但无论确切的类是什么,底层概念都是相同的。
  • 如果这仍然没有帮助:查看我在注释中的建议:删除LogLogFactory引用几分钟,再试一次。即使它不可能是这样,也最好通过尝试来排除它,而不是通过说它“不可能”来排除它。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34432573

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档