【问题标题】:Tomcat 8 throws error : 'A child container failed during start'Tomcat 8 抛出错误:“子容器在启动期间失败”
【发布时间】:2017-05-24 17:27:21
【问题描述】:

我一直在我的计算机上编写代码并将该代码导入其他计算机。但是当我部署代码并在另一台机器上运行时,tomcat无法正常启动并抛出错误。

web.xml 文件:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" version="3.0">
  <display-name>Try</display-name>
  <welcome-file-list>
    <welcome-file>index.html</welcome-file>
    <welcome-file>index.htm</welcome-file>
    <welcome-file>index.jsp</welcome-file>
    <welcome-file>default.html</welcome-file>
    <welcome-file>default.htm</welcome-file>
    <welcome-file>default.jsp</welcome-file>
  </welcome-file-list>
  <servlet>
    <description>Apache CXF Endpoint</description>
    <display-name>cxf</display-name>
    <servlet-name>cxf</servlet-name>
    <servlet-class>org.apache.cxf.transport.servlet.CXFServlet</servlet-class>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>cxf</servlet-name>
    <url-pattern>/services/ *</url-pattern>
  </servlet-mapping>
  <session-config>
    <session-timeout>60</session-timeout>
  </session-config>
  <servlet>
    <description>JAX-RS Tools Generated - Do not modify</description>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <load-on-startup>1</load-on-startup>
  </servlet>
  <servlet-mapping>
    <servlet-name>JAX-RS Servlet</servlet-name>
    <url-pattern>/jaxrs/*</url-pattern>
  </servlet-mapping>
</web-app>

控制台日志:

2017 年 1 月 11 日上午 1:33:12 org.apache.tomcat.util.digester.SetPropertiesRule 开始警告: [SetPropertiesRule]{Server/Service/Engine/Host/Context} 设置 属性 'source' 到 'org.eclipse.jst.jee.server:Try' 没有找到 匹配属性。 2017 年 1 月 11 日凌晨 1 点 33 分 12 秒 org.apache.catalina.startup.VersionLoggerListener 日志信息:服务器 版本:Apache Tomcat/8.0.39

严重:子容器在启动期间失败 java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: 无法启动组件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Try]] 在 java.util.concurrent.FutureTask.report(FutureTask.java:122)Blockquote

原因:org.apache.catalina.LifecycleException: 启动失败 零件 [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/Try]] 在 org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:162) ... 6 更多原因:java.lang.IllegalArgumentException:无法 创建一个 [com.sun.faces.config.ConfigureListener] 类型的实例 在 org.apache.catalina.core.ApplicationContext.addListener

引起:java.lang.ClassNotFoundException: com.sun.faces.config.ConfigureListener 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333) 在 org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)

我已经在 Stack Exchange 上尝试过针对相同问题的其他解决方案。但对我没有任何作用。

【问题讨论】:

  • @Berger :我没有使用 jsf,并且我的 web.xml 中没有“Mojarra”。
  • com.sun.faces.config.ConfigureListener 是一个 JSF 类,在你的服务器上使用它。
  • 相同的代码以前一直在工作。在源代码中找不到对 com.sun.faces.config.ConfigureListener 的任何引用。
  • 还是看看上面的主题,下载 jars 并将它们放在接受的答案说的地方。也许一台服务器的库中有这个,而另一台没有。

标签: java eclipse tomcat jakarta-ee buildpath


【解决方案1】:

似乎导致类com.sun.faces.config.ConfigureListener 存在于您的计算机中,但不存在于目标计算机中。该类通常属于jsf-impl.jar 或jsf-ri.jar 库。

由于您在两台机器上部署相同的战争(我假设),因此库显然没有加入战争,因此它们很可能进入您计算机的 Tomcat 运行时:在目录 &lt;tomcat&gt;/lib 中查找并复制它进入目标机器的 Tomcat lib 目录。

【讨论】:

    【解决方案2】:

    我已经在 server.xml 文件中解决了这个问题。我们在 server.xml 文件中定义了&lt;Context docBase="path" path="/" reloadable="true"/&gt;,所以我只是在 tomcat 解压战争时删除了它。

    在路径上,您的项目内容将在那里,例如 web.xml 文件、类和 lib(jars) 等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-08-05
      • 1970-01-01
      • 2014-01-14
      • 2014-05-30
      • 2012-05-09
      • 2014-01-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多