由于java.util.zip.ZipException,Tomcat 8组件启动失败

时间:2019-07-04 12:46:02

标签: java tomcat tomcat8

我的任务是让旧的Java代码在较新的环境中运行,而让Tomcat(8.0.32)启动组件时遇到问题。在catalina.out日志文件中,我得到以下信息:

import java.util.HashSet;
import java.util.Set;

public class MyClass {
    abstract class Node
{
    public abstract String getCode();
//    public abstract boolean isAttribute();
}

public class Attribute extends Node
{
    private String name;
    public Attribute(String name)
    {
        this.name=name;
    }

    public String getCode()
    {
        return name;
    }

}

public class Expression extends Node
{
    private String name;
    private Set<Attribute> arg1 = new HashSet<Attribute>();
    private Set<Expression> arg2 = new HashSet<Expression>();
    private String op;
    public Expression(Set<Attribute> arg1,Set<Expression> arg2, String op)
    {
        this.arg1=arg1;
        this.arg2=arg2;
        this.op=" "+op+" ";
    }

    public String getCode()
    {
        String result="";
        // The correct code need to be written here
        return result;
    }

    public Expression(String name)
    {
        this.name=name;
    }

}
    public static void main(String args[]) {
        MyClass cl=new MyClass();
        cl.run();
    }

    public void run(){

        Attribute x=new Attribute("x");
        Expression xpx=new Expression(Set.of(x,x),null,"+");
        Expression xpxdx=new Expression(Set.of(x),Set.of(xpx),"/");
        System.out.println(xpxdx.getCode());
    }
}

看来Tomcat试图解压缩某些东西,但失败了。

我对Java或Tomcat不太熟悉,因此我无法弄清楚导致此失败的原因。有一种通用的方法可以找出导致此问题的原因吗?通常,我会尝试运行有问题的代码并尝试对其进行调试,但是看来运行此代码需要Tomcat环境,而且我找不到问题的根源。

我还知道此代码已在另一个虚拟(生产)服务器中成功运行,其中某些组件较旧。

2 个答案:

答案 0 :(得分:0)

它无法提取战争之罐。 如果要检查此选项,请尝试使用tomcat用于解压缩jar的程序或代码解压缩战争的所有库。 或者为tomcat启用完整的堆栈跟踪,以查看完整的日志并识别损坏的jar。 您也可以尝试重建战争。

答案 1 :(得分:0)

问题已解决,谢谢您的贡献。使问题消失所需采取的措施:

问题出在./WEB-INF/lib/xerces.jar中,它已损坏。我对LuisMuñoz的评论链接here很感兴趣。通过将其替换为未损坏的版本,我可以解决此问题。