tomcat为什么要寻找JSF类?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat为什么要寻找JSF类?相关的知识,希望对你有一定的参考价值。

我正在尝试启动和运行我的开发环境,由于某些原因,Tomcat在尝试加载JSF类时遇到了麻烦。我的应用程序不使用JSF。实际上,我还没有将应用程序部署到tomcat。我在启动日志中得到了很多堆栈跟踪信息,当我尝试打开http://localhost:8080时,我无法加载默认的tomcat主页(我只得到了tomcat 404页面)。

这是第一个堆栈跟踪的内容:

SEVERE: Error configuring application listener of class com.sun.faces.util.ReflectionUtils$ReflectionUtilsListener
java.lang.ClassNotFoundException: com.sun.faces.util.ReflectionUtils$ReflectionUtilsListener
    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:3712)
    at org.apache.catalina.core.StandardContext.start(StandardContext.java:4216)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:760)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:740)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:544)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:626)
    at org.apache.catalina.startup.HostConfig.deployDescriptors(HostConfig.java:553)
    at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:488)
    at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1150)
    at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:311)
    at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:120)
    at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1022)
    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:324)
    at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:295)
    at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:433)

对于以下其他类,我也获得了类似的堆栈跟踪:

com.sun.faces.config.ConfigureListener
com.sun.faces.application.WebappLifecycleListener

我不确定这是否相关,但是我在Mas OS 10.5上使用Java 1.4.2安装了1.4兼容包,正在运行Tomcat 5.5.27。

感谢任何想法!

EDIT:似乎Tomcat附带的每个默认应用程序(主机管理器,平衡器,tomcat文档,jsp示例等)都依赖于这些JSF类。我删除了这些默认应用程序,并且一切似乎都可以正常工作。

所以,我的问题是:为什么tomcat附带不包含依赖项的应用程序,我需要怎么做才能使那些默认应用程序正常工作?

答案

您的tomcat安装是完全干净的,还是您继承的一个?

检查webapps是否包含可能引用JSF类的现有war /目录?

更新:啊-我看你发现是这种情况:-)

不知道为什么tomcat不包括其所有依赖项。也许您下载的是开发版本而不是稳定版本?

另一答案

您可能必须清理Tomcat工作目录。

以上是关于tomcat为什么要寻找JSF类?的主要内容,如果未能解决你的问题,请参考以下文章

Tomcat 7、JSF 2.0 和 @PostConstruct

当tomcat服务器运行时,我的java类运行[关闭]

带有 Eclipse 和 Tomcat 的 JSF 2.0 教程 [关闭]

无法将 JSF + CDI 项目从 Tomcat 迁移到 Wildfly

从源码的角度,来解释Tomcat为什么要实现自己的类加载器打破双亲委派模型?

使用 tomcat 的 JSF2 日志