【问题标题】:java.util.concurrent.ExecutionException: Failed to initialize componentjava.util.concurrent.ExecutionException:初始化组件失败
【发布时间】:2019-10-17 08:21:46
【问题描述】:

我正在为一个 maven web 应用程序工作,我正在努力解决这个错误,我找不到任何解决方案:

SEVERE: A child container failed during start
java.util.concurrent.ExecutionException: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@5b0abc94]
at java.util.concurrent.FutureTask.report(FutureTask.java:122)
at java.util.concurrent.FutureTask.get(FutureTask.java:192)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:909)
at org.apache.catalina.core.StandardHost.startInternal(StandardHost.java:831)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902)
at org.apache.catalina.core.StandardEngine.startInternal(StandardEngine.java:262)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardService.startInternal(StandardService.java:423)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardServer.startInternal(StandardServer.java:928)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.startup.Catalina.start(Catalina.java:638)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:350)
at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:492)
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@5b0abc94]
at org.apache.catalina.util.LifecycleBase.handleSubClassException(LifecycleBase.java:441)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:139)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:173)
at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:724)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4783)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:4918)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:183)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1377)
at org.apache.catalina.core.ContainerBase$StartChild.call(ContainerBase.java:1367)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at org.apache.tomcat.util.threads.InlineExecutorService.execute(InlineExecutorService.java:75)
at java.util.concurrent.AbstractExecutorService.submit(AbstractExecutorService.java:134)
at org.apache.catalina.core.ContainerBase.startInternal(ContainerBase.java:902)
... 21 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: error in opening zip file
at org.apache.catalina.webresources.AbstractSingleArchiveResourceSet.initInternal(AbstractSingleArchiveResourceSet.java:143)
at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:136)
... 33 more

它来自运行一个导入多个其他类的index.jsp 页面:

<%@page import="java.util.ArrayList" %>
<%@page import="java.util.List" %>
<%@page import= "java.net.URL" %>
<%@ page import="models.Chapter" %>
<%@ page import="models.User" %>
<%@ page import="models.Student" %>
<%@ page import="models.Teacher" %>
<%@ page import="models.Enrolment" %>
<%@ page import="dao.UserDAO" %>
<%@ page import="dao.StudentDAO" %>
<%@ page import="dao.TeacherDAO" %>
<%@ page import="dao.ChapterDAO" %>
<%@ page import="dao.Chapter2DAO" %>
<%@ page import="dao.EnrolmentDAO" %>
<%@ page language="java" contentType="text/html; charset=US-ASCII" pageEncoding="US-ASCII"%>

从我目前发现的情况来看,它表示某些 JAR 文件可能已损坏,因此我只是将它们从我的 lib 文件中删除。之后,我收到了一个类似Java error: Only a type can be imported. XYZ resolves to a package 的错误,我也无法解决,只是让我回去在WEB-INF 的lib 文件夹中添加所有jar。我尝试删除我的存储库,然后再次安装 maven,没有用。我检查了我的罐子和所有东西的版本,我尝试了很多东西,但到目前为止似乎没有任何效果。这是我的pom.xml 供参考:

 <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
 <java.version>1.8</java.version>
  </properties>



  <dependencies>
<dependency>
  <groupId>junit</groupId>
  <artifactId>junit</artifactId>
  <version>3.8.1</version>
  <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.apache.maven.plugins</groupId>
    <artifactId>maven-compiler-plugin</artifactId>
    <version>3.1</version>
</dependency>

<dependency>
    <groupId>org.hibernate</groupId>
    <artifactId>hibernate-core</artifactId>
    <version>5.3.1.Final</version>
</dependency>

<dependency>
    <groupId>mysql</groupId>
    <artifactId>mysql-connector-java</artifactId>
    <version>8.0.13</version>
</dependency>

<dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>servlet-api</artifactId>
        <version>2.4</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jsp-api</artifactId>
        <version>2.0</version>
        <scope>provided</scope>
    </dependency>


<dependency>
  <groupId>javax.transaction</groupId>
  <artifactId>jta</artifactId>
  <version>1.1</version>
  </dependency>

<dependency>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
<version>1.2</version>

这是我在 Eclipse 中的项目结构:

您知道我该如何处理这个问题吗?我真的不明白问题出在哪里。

【问题讨论】:

  • 为什么要把 jars 放在 lib 文件夹中?
  • 这是我在尝试解决以前的问题时得到的一个很常见的建议。如果我把它们拿出来,我会遇到我提到的另一个错误,解决方案是添加罐子。这就像一个我不知道如何摆脱的循环

标签: java maven jsp tomcat


【解决方案1】:

如果您查看以下异常堆栈跟踪,其中显示,

引起:java.lang.IllegalArgumentException: java.util.zip.ZipException:打开 zip 文件时出错

这意味着,从部署的角度来看,war 文件是不合适的。此外,您必须在 maven 中创建 war 包装。除此之外,您还必须使用 Maven 战争插件。您还必须在 Eclipse 中创建一个完整的 Web 项目。我会建议通过以下教程来获得一个想法。

https://crunchify.com/how-to-create-a-war-file-from-eclipse-using-maven-plugin-apache-maven-war-plugin-usage/

【讨论】:

  • 我刚刚使用您提供的教程创建了一个新项目。我想确保我所有的类和依赖项都以正确的方式放置,所以我现在有这些问题:我是否将我的包放在 java 资源/src 文件夹中?另外,我应该在 WEB-INF 的 lib 文件夹中添加 jars 吗?我应该在 WEB-INF 下也使用 classes 文件夹吗?
  • 如果你使用的是eclipse之类的IDE,可以右键创建包,选择创建包。
  • 我从来没有使用过战争文件,所以我有一个愚蠢的问题:我仍然以同样的方式使用 jar 文件吗?在 pom.xml 中添加依赖项?
  • 您必须为 Web 应用程序部署 war 文件。检查此链接。 stackoverflow.com/questions/5871053/…
  • 有没有办法在不使用war文件的情况下解决这个错误?
猜你喜欢
  • 1970-01-01
  • 2021-08-25
  • 2016-03-25
  • 2012-11-17
  • 2017-12-10
  • 2018-09-17
  • 1970-01-01
  • 2018-10-13
  • 2014-03-13
相关资源
最近更新 更多