Tomcat 8抛出错误:'子容器在启动期间失败'

时间:2017-01-10 09:18:09

标签: java eclipse tomcat java-ee buildpath

我一直在处理计算机上的代码,并在其他计算机上导入该代码。但是当我部署代码并在另一台机器上运行代码时,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] {服务器/服务/引擎/主机/上下文}设置   财产来源&#39; to&#39; org.eclipse.jst.jee.server:试试&#39;没找到   匹配属性。 2017年1月11日上午1:33:12   org.apache.catalina.startup.VersionLoggerListener log INFO:Server   版本: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 [卡塔利娜] .StandardHost [本地主机] .StandardContext [/尝试]]     在   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 at   org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1333)     在   org.apache.catalina.loader.WebappClassLoaderBase.loadClass(WebappClassLoaderBase.java:1167)

我在Stack Exchange上尝试过针对同一问题的其他解决方案。但没有什么对我有用。

2 个答案:

答案 0 :(得分:0)

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

由于您在两台计算机上部署相同的战争(我假设),因此这些库显然不会参与战争,因此它们可能会进入您计算机的Tomcat运行时:在目录<tomcat>/lib中查找它将其复制到目标机器的Tomcat lib目录中。

答案 1 :(得分:0)

我已经在server.xml文件中解决了此问题。我们在server.xml文件上定义了<Context docBase="path" path="/" reloadable="true"/>的位置,所以我只是在tomcat解压战争时将其删除。

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