gpt4 book ai didi

java - 在 Tomcat 6 上部署 webapp

转载 作者:行者123 更新时间:2023-11-28 23:28:05 25 4
gpt4 key购买 nike

我得到了一个“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) {
}

}

网络.xml

<!-- Spring intialisation -->
<listener>
<listener-class>
org.springframework.web.context.ContextLoaderListener
</listener-class>
</listener>


<listener>
<listener-class>
application.util.SessionListener
</listener-class>
</listener>

我使用适当的数据库连接配置了 Tomcat 的文件 context.xml。我使用 Tomcat 6 和 JDK 1.7

最佳答案

您的 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. 部分

编辑:我不确定如何阅读您的评论 - 它可能已经在那个包中了。如果确实如此,还有两个选择:

  • 额外额外确保类或包名称中没有拼写错误(在 web.xml 声明中很容易错过)
  • 检查您的 SessionListener 类是否引用了它需要的其他类(例如作为成员)。如果缺少它们,JVM 也无法实例化 SessionListener 类的对象,从而导致类似的问题。
  • 甚至(或特别是)在您对这个问题发表评论之后:请检查 Jay's link 上的答案从评论中。完成这些步骤。它可能是您缺少的一个不同的 jar,但无论确切的类是什么,基本概念都是相同的。
  • 如果仍然没有帮助:仔细阅读我在评论中的建议:消除 LogLogFactory 引用几分钟,然后重试。即使它不可能是这样,最好通过尝试而不是声明“不可能”来排除这种情况。

关于java - 在 Tomcat 6 上部署 webapp,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34432573/

25 4 0
文章推荐: ios - 不变违规文本字符串必须在 组件内呈现
文章推荐: MySQL - 从表中获取日期列
文章推荐: ios - | AngularJS (ng1)/TS/PhoneGap |在 iOS 上