Jetty-java.lang.IllegalStateException:zip文件已关闭

Jetty-java.lang.IllegalStateException:zip文件已关闭,jetty,Jetty,我在与我们的web服务器连接时遇到一些错误 我在Jetty 7.6中发现了一个导致此问题的bug。是的,我们在Jetty 7.5.4下运行的应用程序中会出现此错误,但在更新版本9上运行的其他应用程序中也会出现此错误 你知道这是什么吗 我们随机得到这个错误: java.lang.IllegalStateException: zip file closed at java.util.zip.ZipFile.ensureOpen(ZipFile.java:632) at java.ut

我在与我们的web服务器连接时遇到一些错误

我在Jetty 7.6中发现了一个导致此问题的bug。是的,我们在Jetty 7.5.4下运行的应用程序中会出现此错误,但在更新版本9上运行的其他应用程序中也会出现此错误

你知道这是什么吗

我们随机得到这个错误:

java.lang.IllegalStateException: zip file closed
    at java.util.zip.ZipFile.ensureOpen(ZipFile.java:632)
    at java.util.zip.ZipFile.access$200(ZipFile.java:56)
    at java.util.zip.ZipFile$1.hasMoreElements(ZipFile.java:485)
    at java.util.jar.JarFile$1.hasMoreElements(JarFile.java:239)
    at org.eclipse.jetty.util.resource.JarFileResource.exists(JarFileResource.java:163)
    at org.eclipse.jetty.webapp.WebAppContext$Context.getResource(WebAppContext.java:1223)
    at org.eclipse.jetty.servlet.DefaultServlet.getResource(DefaultServlet.java:366)
    at org.eclipse.jetty.server.ResourceCache.lookup(ResourceCache.java:188)
    at org.eclipse.jetty.servlet.DefaultServlet.doGet(DefaultServlet.java:445)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:707)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:820)
    at org.eclipse.jetty.servlet.ServletHolder.handle(ServletHolder.java:547)
    at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:480)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:119)
    at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:483)
    at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:227)
    at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:941)
    at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:409)
    at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:186)
    at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:875)
    at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
    at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:219)
    at org.eclipse.jetty.server.handler.HandlerCollection.handle(HandlerCollection.java:149)
    at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
    at org.eclipse.jetty.server.Server.handle(Server.java:345)
    at org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
    at org.eclipse.jetty.server.HttpConnection$RequestHandler.headerComplete(HttpConnection.java:919)
    at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:582)
    at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:218)
    at org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
    at org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
    at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
    at org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
    at java.lang.Thread.run(Thread.java:722)

这有两个主要原因

  • 类路径中存在错误/损坏的JAR文件
  • JVM内置的URL缓存妨碍了我们
  • 对于坏的/损坏的JAR文件,您必须自己隔离它,找出它是哪一个。也许只是一个接一个地解开它们,直到你找到问题所在

    对于JVM URL缓存,这似乎是最重要的

    对于这个场景,您可以告诉jetty为自己的每个URLConnection尝试设置URL

    要禁用JVM缓存,请将以下XML片段添加到
    etc/jetty.XML

    false
    
    您不需要测试所有文件以确保其正确性。只需在java.util.zip.ZipFile.ensureOpen(ZipFile.java:632)处设置一个断点,并检查ZipFile class:private final String name中的name字段,部署jenkins war后,我遇到了相同的问题;我所要做的就是在部署之后重新启动服务器。
    希望能有帮助。

    我也有同样的问题,因为实际的战争是腐败的。尝试重新运行
    mvn clean install
    并重新部署。

    如果您在该代码路径中执行任何自己的反射,也可能发生此问题。

    在删除所有
    .jar
    文件并再次构建所有
    .jar
    文件的路径后,我遇到了相同的问题。现在它工作正常了

    它似乎是一个损坏的.jar文件,但不确定您是否在jetty 9上看到了它。请在RT/jetty下的bugs.eclipse.org上为它打开一个bug。禁用gzip是一个好做法吗?在我这样做之后,这似乎避免了这个错误。gzip true我怎么知道witch-JAR文件有问题?我想它可能是在这里创建的gwtime-alpha.JAR。因为这是我两个项目中最后一个共同添加的项目。这在我在Jetty7下运行的项目中是新的,但在Jetty9下运行的项目中有一段时间发现了这个问题。我还添加了poi-3.9-20121203.jar库。Jasper试图读取JSTL 1.2 jar时,在Sun Java 5和嵌入式Jetty 7上出现了相同的错误。这个问题在Java7和Java8上不存在,只在Java5上存在。但是调用
    org.eclipse.jetty.util.resource.resource.setDefaultUseCaches(false)