tomcat 启动异常 EOFException: Unexpected end of ZLIB input stream
Posted 格格巫 MMQ!!
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了tomcat 启动异常 EOFException: Unexpected end of ZLIB input stream相关的知识,希望对你有一定的参考价值。
EVERE: Exception fixing docBase for context [/agdis]
java.io
.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:413)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io
.FilterInputStream.read(FilterInputStream.java:107)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:413)
at org.apache.catalina.startup.ExpandWar.expand(ExpandWar.java:144)
at org.apache.catalina.startup.ContextConfig.fixDocBase(ContextConfig.java:735)
at org.apache.catalina.startup.ContextConfig.beforeStart(ContextConfig.java:863)
at org.apache.catalina.startup.ContextConfig.lifecycleEvent(ContextConfig.java:388)
at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:117)
at org.apache.catalina.util.LifecycleBase.fireLifecycleEvent(LifecycleBase.java:90)
at org.apache.catalina.util.LifecycleBase.setStateInternal(LifecycleBase.java:402)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:147)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig
D
e
p
l
o
y
W
a
r
.
r
u
n
(
H
o
s
t
C
o
n
f
i
g
.
j
a
v
a
:
1930
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
E
x
e
c
u
t
o
r
s
DeployWar.run(HostConfig.java:1930) at java.util.concurrent.Executors
DeployWar.run(HostConfig.java:1930)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Jan 18, 2018 10:23:58 AM org.apache.catalina.core.StandardContext startInternal
SEVERE: Error while attempting to validate required application extensions
java.io
.IOException: Jar: commons-codec-1.5.jar
at org.apache.catalina.util.ExtensionValidator.validateApplication(ExtensionValidator.java:205)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5339)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:652)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:1095)
at org.apache.catalina.startup.HostConfig
D
e
p
l
o
y
W
a
r
.
r
u
n
(
H
o
s
t
C
o
n
f
i
g
.
j
a
v
a
:
1930
)
a
t
j
a
v
a
.
u
t
i
l
.
c
o
n
c
u
r
r
e
n
t
.
E
x
e
c
u
t
o
r
s
DeployWar.run(HostConfig.java:1930) at java.util.concurrent.Executors
DeployWar.run(HostConfig.java:1930)atjava.util.concurrent.ExecutorsRunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask.run(FutureTask.java:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.util.zip.ZipException: invalid LOC header (bad signature)
at java.util.zip.ZipFile.read(Native Method)
at java.util.zip.ZipFile.access
1400
(
Z
i
p
F
i
l
e
.
j
a
v
a
:
56
)
a
t
j
a
v
a
.
u
t
i
l
.
z
i
p
.
Z
i
p
F
i
l
e
1400(ZipFile.java:56) at java.util.zip.ZipFile
1400(ZipFile.java:56)atjava.util.zip.ZipFileZipFileInputStream.read(ZipFile.java:679)
at java.util.zip.ZipFile$ZipFileInflaterInputStream.fill(ZipFile.java:415)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:158)
at java.io
.FilterInputStream.read(FilterInputStream.java:133)
at java.io
.PushbackInputStream.read(PushbackInputStream.java:186)
at java.util.zip.ZipInputStream.readFully(ZipInputStream.java:424)
at java.util.zip.ZipInputStream.readLOC(ZipInputStream.java:277)
session未超时的情况下,服务器关闭的时候会被序列化为工程名\\SESSIONS.ser,tomcat 启动的时候再加载进来,EOFException表示tomcat上次关闭时还有一些活动连接,所以在重启时tomcat尝试去恢复这些session,但是在输入过程中意外地到达文件尾或流尾的信号,导致从session中获取数据失败。异常是tomcat本身的问题,由于tomcat上次非正常关闭时有一些活动session被持 久化(表现为一些临时文件),在重启时,tomcat尝试去恢复这些session的持久化数据但又读取失败造成的。此异常不影响系统的使用。
解决办法:将 tomcat_home\\work\\Catalina\\localhost\\『工程名』\\SESSIONS.ser删除。如果正常关闭服务端,该文件是自 动删除的。考虑到每个人的tomat的工作目录不同,建议在“搜索”功能中找到你的SESSIONS.ser文件,而且只需要删 除…\\yourProjectName\\下的SESSIONS.ser即可。
最简单的办法是work下的全部删除,然后重启tomcat。
用tomcat作web服务器的时候,部署的程序在webApps下,这些程序都是编译后的程序(发布到tomcat的项目里含的类,会被编译成.class后才发布过来,源文件没有发布过来,但这里的jsp没有经编译的)。tomcat有一个work目录,里面存放了页面的缓存,访问的jsp都会编译(从work里进入Catalina后的如localhost站点文件夹下的项目,我们可以看到那些jsp 页面会被编译成应该是servlet文件,下次再来访问时,就直接运行servlet类就可以向客户端反应响应页面了,所以有的博客说第一次访问时会比较 慢,是因为新发布上去的页面在第一个人访问时,会先编译成servlet文件,所以慢了,一旦编译好,那么除非jsp页面修改,不然下次访问直接运行 servlet就可以响应用户,所以快),编译后的文件都会存储在work目录下。而tomcat显示的目录,都会从这个缓存里找编译后的jsp对应的class文件。所以当清空了work目录后,该过程将会从新来过。
有的时候会遇到一个问题,就是修改后的页面在tomcat运行的时候显示不了修改后的痕迹。这个时候删除work目录下对应的项目文件夹,重新启动tomcat就可以了。
以上是关于tomcat 启动异常 EOFException: Unexpected end of ZLIB input stream的主要内容,如果未能解决你的问题,请参考以下文章
严重: Exception loading sessions from persistent storage java.io.EOFException
tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案
tomcat启动时报:IOException while loading persisted sessions: java.io.EOFException的解决方案 ZT
Exception loading sessions from persistent storage
Exception loading sessions from persistent storage
java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 错误