- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 Windows 64 位机器 Java 7 上运行 Tomcat 7.0.70 和 Eclipse Kepler。当我从 Eclipse 运行我的软件时,它运行完美,但只有当我将我的项目部署到 Tomcat 时,我才会收到以下错误,将我的项目导出到 WAR 文件后:
SEVERE: Error configuring application listener of class com.crafy.controller.AppContextListener java.lang.ClassNotFoundException: com.crafy.controller.AppContextListener.
AppContextListener是我自己实现ServletContextListener的文件。这是文件的一部分,其中我删除了除 contextInitialized() 之外的所有内容,并且在那里,我删除了除 print 语句之外的所有内容(contextInitialized() 根本没有被调用):
package com.crafy.controller;
@WebListener
public class AppContextListener implements ServletContextListener {
public void contextInitialized(ServletContextEvent servletContextEvent) {
SessionFactory sessionFactoryInst = null;
System.out.println("Database connection initialized for Application.");
}
}
当我从 Eclipse 运行它时,整个应用程序运行良好(右键单击“本地主机上的 Tomcat v7.0 服务器”并单击“开始”)。另外,当我尝试使用 WAR 文件时出现上述错误。为了获取 WAR 文件,我从 Eclipse 导出(通过转到文件 -> 导出 -> WAR 文件)。然后我将 WAR 文件放入文件夹:C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps。当我转到 IP 地址 ( http://192.168.1.154:8080/crafy ) 时,该站点出现,但我无法访问由我的 AppContextListener 初始化的数据库。但是,它不会初始化,因为找不到该类。
以下是我的应用程序特定 web.xml 的相关部分(位于 C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\crafy\WEB-INF\web.xml):
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
<display-name>crafy</display-name>
<welcome-file-list>
<welcome-file>home.jsp</welcome-file>
</welcome-file-list>
<servlet>
<servlet-name>videoSession</servlet-name>
<servlet-class>
org.springframework.web.servlet.DispatcherServlet
</servlet-class>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>videoSession</servlet-name>
<url-pattern>/videoSession.jsp</url-pattern>
<url-pattern>/videoSession.html</url-pattern>
</servlet-mapping>
<resource-env-ref>
<description>Transactions</description>
<resource-env-ref-name>UserTransaction</resource-env-ref-name>
<resource-env-ref-type>javax.transaction.UserTransaction</resource-env-ref-type>
</resource-env-ref>
<listener>
<listener-class>com.crafy.controller.AppContextListener</listener-class>
</listener>
</web-app>
AppContextListener.class 文件确实存在于:C:\Program Files\Apache Software Foundation\Tomcat 7.0\webapps\crafy\WEB-INF\classes\com\crafy\controller
我已尝试检查和更改多个不同内容中的路径,并尝试将 AppContextListener.class 文件移动到不同位置,如 Apache: Error configuring application listener 中所建议的那样.我还尝试删除 Eclipse IDE 上的服务器,再次创建它,然后按照同一链接中的建议再次导出到 WAR。那没有解决任何问题。我还从 Eclipse 中的 Tomcat 服务器尝试了“清理 Tomcat 工作目录...”和“清理...”(请参阅 ClassNotFoundException with ServletContextlistener 和 ServletContextListener SEVERE: Error configuring application listener of class marktest.Config,这表明两者都已清理),然后再次导出到 war。我还尝试了这篇文章中的多个建议:SEVERE: Error configuring application listener of class org.apache.catalina.deploy.ApplicationListener .没有一个成功。
我知道正在访问特定于应用程序的 web.xml,因为如果我完全删除它,那么当我转到 URL 时,它会转到 index.jsp,而不是 web 中指定的 home.jsp。 xml。所以,我在标签中提供的类路径一定有问题,但是,我似乎已经尝试了所有方法但仍然找不到它。正如我所说,当我从 Eclipse 运行服务器时一切正常。我尝试镜像与 Eclipse 使用的相同的文件夹结构。具体来说,Eclipse 项目的文件夹结构是:
base/crafy/WebContent/WEB-INF/ ----> contains web.xml and contains jsp and lib folders base/crafy/target/classes/com/crafy/controller ----> contains AppContextListener.class
但是war文件部署到Tomcat时,文件夹结构为:
C:/Program Files/Apache Software Foundation/Tomcat 7.0/webapps/crafy/WEB-INF/ ----> contains web.xml and contains jsp and lib AND classes folders so that the AppContextListener.class file is located in webapps/crafy/WEB-INF/classes/com/crunchify/controller
Eclipse 和直接部署到 Tomcat 之间的相对位置略有不同,我试图对其进行更改以使其等效,但似乎没有帮助。
我之前也使用过 Tomcat 7.0.68,它有同样的问题,这促使我将最新的 Tomcat 版本安装到 7.0.70,但也产生了同样的问题。
有人对我如何进一步调试有任何建议吗?非常感激任何的帮助。我花了很多时间试图诊断这个问题,请帮忙!!
最佳答案
在花费大量时间尝试让上述内容在 Tomcat 7.0 上运行后,我没有成功。但是,我安装了 Tomcat 8.0(版本 8.0.36),并使用了与我在 Tomcat 7.0 上使用的设置完全相同的设置(不适用于 Tomcat 7.0),并且它有效(在 8.0 上) ).然后在将我的项目导出到 WAR 文件并将其移动到 Tomcat 8.0 webapps 文件夹后,它立即调用 contextInitialized(),因为我一直试图在 7.0 上工作。解决方法是简单地安装和使用 Tomcat 8 而不是 Tomcat 7。这仍然不能解释为什么在 Tomcat 7.0 中使用的相同过程不起作用。我没有看到任何人回复我的查询来解释这种行为或在本网站的任何地方。如果除了使用 Tomcat 8.0 之外还有解决此问题的方法,请发帖。否则,此解决方法对我有用。
关于java - 配置 AppContextListener 类的应用程序监听器时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38557925/
我正在使用 node.js 和 mocha 单元测试,并且希望能够通过 npm 运行测试命令。当我在测试文件夹中运行 Mocha 测试时,测试运行成功。但是,当我运行 npm test 时,测试给出了
我的文本区域中有这些标签 ..... 我正在尝试使用 replaceAll() String 方法替换它们 text.replaceAll("", ""); text.replaceAll("", "
早上好,我是 ZXing 的新手,当我运行我的应用程序时出现以下错误: 异常Ljava/lang/NoClassDefFoundError;初始化 ICOM/google/zxing/client/a
我正在制作一些哈希函数。 它的源代码是... #include #include #include int m_hash(char *input, size_t in_length, char
我正在尝试使用 Spritekit 在 Swift 中编写游戏。目的是带着他的角色迎面而来的矩形逃跑。现在我在 SKPhysicsContactDelegate (didBegin ()) 方法中犯了
我正在尝试创建一个用于导入 CSV 文件的按钮,但出现此错误: actionPerformed(java.awt.event.ActionEvent) in cannot implement
请看下面的代码 public List getNames() { List names = new ArrayList(); try { createConnection(); Sta
我正在尝试添加一个事件以在“dealsArchive”表中创建一个条目,然后从“deals”表中删除该条目。它需要在特定时间执行。 这是我正在尝试使用的: DELIMITER $$ CREATE EV
我试图将两个存储过程的表结果存储到 phpmyadmin 例程窗口中的单个表中,这给了我 mariadb 语法错误。单独调用存储过程给出了结果。 存储过程代码 BEGIN CREATE TABLE t
我想在 videoview 中加载视频之前有一个进度条。但是我收到以下错误。我还添加了所有必要的导入。 我在 ANDROID 中使用 AIDE 这是我的代码 public class MainActi
我已经使用了 AsyncTask,但我不明白为什么在我的设备 (OS 4.0) 上测试时仍然出现错误。我的 apk 构建于 2.3.3 中。我想我把代码弄错了,但我不知道我的错误在哪里。任何人都请帮助
我在测试 friend 网站的安全性时,通过在 URL 末尾添加 ' 发现了 SQL 注入(inject)漏洞该网站是用zend框架构建的我遇到的问题是 MySQL -- 中的注释语法不起作用,因此页
我正在尝试使用堆栈溢出答案之一的交互式信息窗口。 链接如下: interactive infowindow 但是我在代码中使用 getMap() 时遇到错误。虽然我尝试使用 getMapAsync 但
当我编译以下代码时出现错误: The method addMouseListener(Player) is undefined for the type Player 代码: import java.
我是 Android 开发的初学者。我正在开发一个接收 MySql 数据然后将其保存在 SQLite 中的应用程序。 我将 Json 用于同步状态,以便我可以将未同步数据的数量显示为要同步的待处理数据
(这里是Hello world级别的自动化测试人员) 我正在尝试下载一个文件并将其重命名以便于查找。我收到一个错误....这是代码 @Test public void allDownload(
我只是在写另一个程序。并使用: while (cin) words.push_back(s); words是string的vector,s是string。 我的 RAM 使用量在 4 或 5
我是 AngularJS 的新手,我遇到了一个问题。我有一个带有提交按钮的页面,当我单击提交模式时必须打开并且来自 URL 的数据必须存在于模式中。现在,模式打开但它是空的并且没有从 URL 获取数据
我正在尝试读取一个文件(它可以包含任意数量的随机数字,但不会超过 500 个)并将其放入一个数组中。 稍后我将需要使用数组来做很多事情。 但到目前为止,这一小段代码给了我 no match for o
有些人在使用 make 命令进行编译时遇到了问题,所以我想我应该在这里尝试一下,我已经在以下操作系统的 ubuntu 32 位和挤压 64 位上尝试过 我克隆了 git 项目 https://gith
我是一名优秀的程序员,十分优秀!