Не удалось запустить компонент Tomcat 8 из-за java.util.zip.ZipException - PullRequest
1 голос
/ 04 июля 2019

Мне поручено заставить старый Java-код работать в более новой среде, и у меня проблема с получением Tomcat (8.0.32) для запуска компонента.В журнале catalina.out я получаю следующее:

INFO: Using a shared selector for servlet write/read
Jul 04, 2019 3:27:30 PM org.apache.catalina.startup.Catalina load
INFO: Initialization processed in 1232 ms
Jul 04, 2019 3:27:31 PM org.apache.catalina.core.StandardService startInternal
INFO: Starting service Catalina
Jul 04, 2019 3:27:31 PM org.apache.catalina.core.StandardEngine startInternal
INFO: Starting Servlet Engine: Apache Tomcat/8.0.32 (Ubuntu)
Jul 04, 2019 3:27:31 PM org.apache.catalina.startup.HostConfig deployDescriptor
INFO: Deploying configuration descriptor /etc/tomcat8/Catalina/localhost/reportServer.xml
Jul 04, 2019 3:27:31 PM org.apache.catalina.core.ContainerBase addChildInternal
SEVERE: ContainerBase.addChild: start: 
org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/reportServer]]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:725)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794)
    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:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)
Caused by: org.apache.catalina.LifecycleException: Failed to start component [org.apache.catalina.webresources.StandardRoot@79e9c8c8]
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:153)
    at org.apache.catalina.core.StandardContext.resourcesStart(StandardContext.java:4937)
    at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5067)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    ... 10 more
Caused by: org.apache.catalina.LifecycleException: Failed to initialize component [org.apache.catalina.webresources.JarResourceSet@3d9ef955]
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:107)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:136)
    at org.apache.catalina.webresources.StandardRoot.startInternal(StandardRoot.java:699)
    at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
    ... 13 more
Caused by: java.lang.IllegalArgumentException: java.util.zip.ZipException: invalid END header (bad central directory offset)
    at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:96)
    at org.apache.catalina.util.LifecycleBase.init(LifecycleBase.java:102)
    ... 16 more
Caused by: java.util.zip.ZipException: invalid END header (bad central directory offset)
    at java.util.zip.ZipFile.open(Native Method)
    at java.util.zip.ZipFile.<init>(ZipFile.java:225)
    at java.util.zip.ZipFile.<init>(ZipFile.java:155)
    at java.util.jar.JarFile.<init>(JarFile.java:166)
    at java.util.jar.JarFile.<init>(JarFile.java:103)
    at org.apache.catalina.webresources.JarResourceSet.initInternal(JarResourceSet.java:88)
    ... 17 more

Jul 04, 2019 3:27:31 PM org.apache.catalina.startup.HostConfig deployDescriptor
SEVERE: Error deploying configuration descriptor /etc/tomcat8/Catalina/localhost/reportServer.xml
java.lang.IllegalStateException: ContainerBase.addChild: start: org.apache.catalina.LifecycleException: Failed to start component [StandardEngine[Catalina].StandardHost[localhost].StandardContext[/reportServer]]
    at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:729)
    at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:701)
    at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:717)
    at org.apache.catalina.startup.HostConfig.deployDescriptor(HostConfig.java:585)
    at org.apache.catalina.startup.HostConfig$DeployDescriptor.run(HostConfig.java:1794)
    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:1149)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
    at java.lang.Thread.run(Thread.java:748)

Похоже, что Tomcat пытается что-то распаковать, но у него ничего не получается.

Я не слишком знаком ни с java, ни с Tomcat, и поэтому не могу понять, что вызывает этот сбой.Есть ли общий способ выяснить, что вызывает эту проблему?Обычно я пытаюсь запустить рассматриваемый код и отлаживать его, но похоже, что для запуска этого кода требуется среда Tomcat, и я не могу найти источник проблемы.

Я также знаю, что этокод успешно выполняется на другом виртуальном (производственном) сервере, где некоторые компоненты устарели.

Ответы [ 2 ]

0 голосов
/ 05 июля 2019

Проблема решена, спасибо за вклад.Что нужно было, чтобы проблема исчезла:

Проблема была в ./WEB-INF/lib/xerces.jar, она была повреждена.Я думаю, что с комментариями Луиса Муньоса, связывающими здесь .Заменив его на не поврежденную версию, я смог решить эту проблему.

0 голосов
/ 04 июля 2019

Невозможно извлечь банку войны.Если вы хотите проверить это, попробуйте разархивировать все библиотеки войны, используя программу или код, который tomcat использует для распаковки банки.Или включите полную трассировку стека для tomcat, чтобы просмотреть полный журнал и определить поврежденный jar.Вы также можете попытаться восстановить войны.

...