java - 监听器类不调用方法?

标签 java apache jsp tomcat jakarta-ee

我正在 Eclipse 中开发动态 Web 项目。一周前,单击“在服务器中运行”按钮后,整个项目正确加载。但是昨天,当我按下在服务器中运行按钮时,控制台会给出一条错误消息,指出它无法加载 Servlet 上下文。服务器是 Apache Tomcat 5.5,以下是控制台错误:

15 Dec, 2009 9:14:22 AM org.apache.catalina.core.AprLifecycleListener lifecycleEvent
INFO: The Apache Tomcat Native library which allows optimal performance in production environments was not found on the java.library.path: C:\Sun\SDK\jdk\bin;.;C:\Windows\Sun\Java\bin;C:\Windows\system32;C:\Windows;C:/dev/eclipse/jre/bin/client;C:/dev/eclipse/jre/bin;C:\Program Files\PC Connectivity Solution\;C:\Program Files\Common Files\Microsoft Shared\Windows Live;C:\Program Files\Java\jre6/bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;c:\Program Files\Microsoft SQL Server\90\Tools\binn\;C:\Program Files\CyberLink\Power2Go\;C:\Program Files\QuickTime\QTSystem\;C:\Sun\SDK\bin;;C:\Program Files\Common Files\Microsoft Shared\Windows Live
15 Dec, 2009 9:14:22 AM org.apache.coyote.http11.Http11BaseProtocol init
INFO: Initializing Coyote HTTP/1.1 on http-8080
15 Dec, 2009 9:14:22 AM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 707 ms
15 Dec, 2009 9:14:22 AM org.apache.catalina.core.StandardService start
INFO: Starting service Catalina
15 Dec, 2009 9:14:22 AM org.apache.catalina.core.StandardEngine start
INFO: Starting Servlet Engine: Apache Tomcat/5.5.28
15 Dec, 2009 9:14:22 AM org.apache.catalina.core.StandardHost start
INFO: XML validation disabled
15 Dec, 2009 9:14:23 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Error configuring application listener of class InitMainMethodFromModel
java.lang.ClassNotFoundException: InitMainMethodFromModel
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1386)
 at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1232)
 at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3743)
 at org.apache.catalina.core.StandardContext.start(StandardContext.java:4252)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardHost.start(StandardHost.java:736)
 at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1014)
 at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
 at org.apache.catalina.core.StandardService.start(StandardService.java:448)
 at org.apache.catalina.core.StandardServer.start(StandardServer.java:700)
 at org.apache.catalina.startup.Catalina.start(Catalina.java:552)
 at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
 at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
 at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
 at java.lang.reflect.Method.invoke(Method.java:597)
 at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
 at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)
15 Dec, 2009 9:14:23 AM org.apache.catalina.core.StandardContext listenerStart
SEVERE: Skipped installing application listeners due to previous error(s)
15 Dec, 2009 9:14:23 AM org.apache.catalina.core.StandardContext start
SEVERE: Error listenerStart
15 Dec, 2009 9:14:23 AM org.apache.catalina.core.StandardContext start
SEVERE: Context [/BookManagementSoftwareServlet] startup failed due to previous errors
15 Dec, 2009 9:14:23 AM org.apache.coyote.http11.Http11BaseProtocol start
INFO: Starting Coyote HTTP/1.1 on http-8080
15 Dec, 2009 9:14:23 AM org.apache.jk.common.ChannelSocket init
INFO: JK: ajp13 listening on /0.0.0.0:8009
15 Dec, 2009 9:14:23 AM org.apache.jk.server.JkMain start
INFO: Jk running ID=0 time=0/24  config=null
15 Dec, 2009 9:14:23 AM org.apache.catalina.storeconfig.StoreLoader load
INFO: Find registry server-registry.xml at classpath resource
15 Dec, 2009 9:14:23 AM org.apache.catalina.startup.Catalina start
INFO: Server startup in 673 ms

请记住,我已经将该项目备份在闪存驱动器中,之后,我尝试从头开始重新安装所有内容。其中包括 Eclipse Java EE 版本、Java EE、JRE、Apache Tomcat 5.5(尝试了 .msi 和 .zip),还尝试通过创建一个名为相同但添加类和 servlet 文件的新项目在 Eclipse 中导入项目右键单击该项目并选择创建新类/servlet,然后从先前工作区的类文件中复制粘贴代码。但是我得到了和以前一样的错误。

最佳答案

ClassNotFoundException 没有提到包名称,这意味着您已将此类放在默认包中。将类放在默认包中不是一个好主意。这样,其他包中的类(例如网络服务器类)就无法看到/导入它(自己测试一下:在普通包中的类中尝试从默认包中导入类)。然而,在某些情况下,这需要借助类加载中的黑客攻击和/或所用 JVM 中的错误来解决,但你真的应该依赖它,它使你的应用程序基本上不可移植。

将类放在一个包中。总是。还要确保您在 web.xml 的类声明中使用完全限定的类名(包括包)。

关于java - 监听器类不调用方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1905097/

相关文章:

java - 单击获取堆转储对话框时,来自 Eclipse IDE 的内存分析不会列出任何本地进程 ID

php - 使用 mod_rewrite 的 .htaccess 新手问题

java - OGNL exp 未评估其日期值

java - 构建失败,导入了错误的类?

java - 使用 ObjectOutputStream 写入文件而不覆盖旧数据

wordpress - 无法通过 HTTPS 访问 WordPress docker 容器的静态文件

java - 从数据库表中检索数据并用html将其显示在表中

java - 如何从jsp中获取值

java - Android捕获新的拨出电话

django - 自定义 Django 404 页面和 Django 调试页面