Apache:配置应用程序监听器时出错。

4

我在尝试运行应用程序时遇到了这个问题:

警告:[SetContextPropertiesRule]{上下文}将属性“source”设置为“org.eclipse.jst.j2ee.server:CongressApp”未找到匹配的属性。2014年5月13日下午1:35:26,org.apache.catalina.core.StandardContext listenerStart SEVERE:类org.apache.catalina.deploy.ApplicationListener@bdeab的应用程序侦听器配置错误java.lang.ClassNotFoundException:com.iss.congress.core.util.CongressContextListener在org.apache.catalina.loader.WebappClassLoader.loadClass( WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:656) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1635) at java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:722)
2014年5月13日下午1:35:26,org.apache.catalina.core.StandardContext listenerStart SEVERE:类org.apache.catalina.deploy.ApplicationListener@ 6a5b20的应用程序侦听器配置错误java.lang.ClassNotFoundException:com.iss.congress.core.util.CongressHttpSessionListener在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527) at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:509) at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:137) at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4854) at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434) at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150) at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901) at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877) at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633) at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:656) at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1635) at java.util.concurrent.Executors $RunnableAdapter.call(Executors.java:471) at java.util.concurrent.FutureTask $ Sync.innerRun(FutureTask.java:334) at java.util.concurrent.FutureTask.run(FutureTask.java:166)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)在java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor.java:615)at java.lang.Thread.run(Thread.java:722)
2014年5月13日下午1:35:26,org.apache.catalina.core.StandardContext listenerStart SEVERE:类org.apache.catalina.deploy.ApplicationListener@ 1bacb12的应用程序侦听器配置错误java.lang.ClassNotFoundException:com.iss.congress.core.util.HibernateListener在org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714) at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:527) at org.apache.catalina.core.Default

在web.xml中,监听器的配置方式如下:

<listener>
        <listener-class>com.iss.congress.core.util.CongressContextListener</listener-class>
    </listener>

    <listener>
        <listener-class>com.iss.congress.core.util.CongressHttpSessionListener</listener-class>
    </listener>


    <listener>
        <display-name>Hibernate Session Listener</display-name>
        <listener-class>com.iss.congress.core.util.HibernateListener</listener-class>
    </listener>
4个回答

6

这是一个java.lang.ClassNotFoundException: com.iss.congress.core.util.HibernateListener的案例,意味着类路径中不存在HibernateListener类。请确保包含此类的jar文件存在于应用程序的WEB-INF/lib文件夹中。

如果该类存在于src文件夹中,请检查包名。包名/类名区分大小写。


谢谢您的回复。不幸的是,我检查了拼写,但没有发现问题。 - Slava Chirița
1
我尝试在Eclipse IDE上删除服务器,然后再次创建它。这些步骤解决了问题。 您能解释一下为什么会出现这个问题吗? - Slava Chirița
3
这可能是缓存的问题。很少情况下,Eclipse+Tomcat会部分地缓存War文件的早期版本(由于线程阈值)。这样会导致出现问题。如果你遇到你所做的更改没有反映出来的情况,下次也可以尝试清除Tomcat工作目录。 - AdityaKeyal

1
以下是可能的原因:
  1. 您的类文件在指定位置不可用(请检查您的package_name/class_file_name.java)

  2. 或者,您的文件存在于指定位置,但是文件中存在错误,这可能会导致构建(生成类文件)出错

(对我而言,问题的原因是第2点。)问题的根本原因是,我更改(升级)了rest库的版本,这导致现有的类文件出现问题。

我通过添加/选择正确的Apache Tomcat服务器解决了一个问题。

项目属性 => Java构建路径 => 添加库 => 选择 服务器运行时 => 点击下一步并选择 "Apache Tomcat" => 完成


1

我在listener类中进行了编辑,保存并重新发布到tomcat后,发现了“类未找到”的错误。
我的做法是先将listener类中的修改内容删除,重新发布到tomcat,然后再次添加之前的修改。我这样做是因为我怀疑Eclipse生成.class文件时出了问题,尽管我已经多次清理过项目。
删除我的更新,保存(以获得新的编译版本),然后再次添加我的更新解决了我的问题。
是的,这似乎不合逻辑,但是IDEs问题有时会发生。


0
在我的情况下,一些 jar 文件丢失了,例如在 Tomcat 目录的 libs 文件夹中缺少 javax.ejb-api-3.2.jar。还要检查项目的 .m2 存储库中的 jars libs。

1
你的回答可以通过提供更多支持信息来改进。请编辑以添加进一步的细节,例如引用或文档,以便他人可以确认你的答案是正确的。您可以在帮助中心找到有关如何编写良好答案的更多信息。 - Community

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接