【问题标题】:Tomcat Exception on Startup: java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet启动时的 Tomcat 异常:java.lang.ClassNotFoundException:javax.faces.webapp.FacesServlet
【发布时间】:2017-03-28 14:17:42
【问题描述】:

我正在使用 Tomcat 8.0.41,但遇到了一个我无法解决的问题。当我启动 Tomcat 时,我在日志中收到以下异常消息,即使没有部署 Web 应用程序。

28-Mar-2017 09:03:45.659 INFO [localhost-startStop-1] org.apache.catalina.core.ApplicationContext.log Marking servlet Faces Servlet as unavailable
28-Mar-2017 09:03:45.659 SEVERE [localhost-startStop-1] org.apache.catalina.core.StandardContext.loadOnStartup Servlet [Faces Servlet] in web application [] threw load() exception
 java.lang.ClassNotFoundException: javax.faces.webapp.FacesServlet
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)
    at org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)
    at org.apache.catalina.core.DefaultInstanceManager.loadClass(DefaultInstanceManager.java:518)
    at org.apache.catalina.core.DefaultInstanceManager.loadClassMaybePrivileged(DefaultInstanceManager.java:499)
    at org.apache.catalina.core.DefaultInstanceManager.newInstance(DefaultInstanceManager.java:118)
    at org.apache.catalina.core.StandardWrapper.loadServlet(StandardWrapper.java:1091)
    at org.apache.catalina.core.StandardWrapper.load(StandardWrapper.java:1027)
    at org.apache.catalina.core.StandardContext.loadOnStartup(StandardContext.java:5038)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5348)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:145)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:753)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:729)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:587)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1798)
    at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:511)
    at java.util.concurrent.FutureTask.run(FutureTask.java:266)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)

我在 StackOverflow 上找到的所有问题都说 Web 应用程序需要包含正确的依赖项,但奇怪的是,当我部署了零个 Web 应用程序时,错误仍然显示。我不记得当我第一次开始使用 tomcat 时出现这个错误,但我不记得它是什么时候开始的。我宁愿不要在 tomcat/lib 文件夹中添加 jar,因为我使用的 Web 应用程序具有适当的依赖关系。

这可能是什么原因造成的?

【问题讨论】:

  • 哇,这太奇怪了。由于您没有部署 webapps...也许尝试停止 tomcat,清除“工作”目录,然后重新启动 tomcat。
  • 另外,请看一下“webapps”目录,看看真正要部署的内容。我刚刚意识到您可能一直在查看来自 tomcat 管理器的内容,而不是查看文件系统...
  • @BradBales 感谢您的帮助。我清理了工作并重新启动,但这没有帮助。 webapps 目录完全是空的。
  • @BradBales 我想出了一个解决方案(见答案)。谢谢你的帮助!它为我指明了正确的方向!

标签: tomcat


【解决方案1】:

我找到了问题的根源,但我不确定它为什么会导致它。 {CATALINA BASE}\conf\Catalina\localhost\ROOT.xml 中的文件已更改为:

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="SOME LONG INVALID FILE PATH" path=""/>

“SOME LONG INVALID FILE PATH”是我在本周早些时候删除的 JEE 教程目录。我将 ROOT.xml 文件编辑为

<?xml version="1.0" encoding="UTF-8"?>
<Context docBase="" path=""/>

现在 Tomcat 毫无怨言地启动了。欢迎任何解释为什么会导致上述问题。

【讨论】:

    猜你喜欢
    • 2020-04-03
    • 1970-01-01
    • 1970-01-01
    • 2014-04-06
    • 1970-01-01
    • 2019-03-02
    • 2021-10-12
    • 1970-01-01
    相关资源
    最近更新 更多