【问题标题】:Listener Class not invoking method?侦听器类不调用方法?
【发布时间】:2009-12-15 04:03:20
【问题描述】:

我正在 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,然后从前一个工作区的类文件中复制粘贴代码。但是我得到与以前相同的错误。

【问题讨论】:

    标签: java apache jsp tomcat jakarta-ee


    【解决方案1】:

    ClassNotFoundException 没有提到包名,这意味着你已经把这个类放在了默认包中。将类放在默认包中是个坏主意。这样其他包中的类(例如网络服务器类)就无法看到/导入它(自己测试:在普通包中的类中尝试import默认包中的类)。然而,在某些情况下,这需要借助类加载中的一些技巧和/或使用的 JVM 中的错误,但您真的应该依赖它,它会使您的应用程序基本上不便携。

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

    【讨论】:

    • 感谢您的指点,不一定是我使用了默认包,而是当我将package [fully qualified name] 添加到类中时,完全限定名称没有在部署描述符中注册
    【解决方案2】:

    错误消息告诉您找不到类InitMainMethodFromModel。你确定包含这个类的 jar 文件在类路径上吗?

    【讨论】:

    • 其实我写了InitMainMethodFromModelListener类。它实现了ServletContextListener
    • 嗯,消息说它找不到课程。从那里开始并尝试找出原因。
    • 好吧,因为它是在控制台中编写的,所以问题到此结束:org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433) 15 Dec, 2009。因此,即使您可以看到问题
    • 就像我之前提到的,整个项目在一周前运行良好,当时我最后一次检查。
    猜你喜欢
    • 2020-06-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-07
    相关资源
    最近更新 更多