Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 从URLClassLoader请求资源会导致;“压缩文件已关闭”;例外_Java_Url_Classloader - Fatal编程技术网

Java 从URLClassLoader请求资源会导致;“压缩文件已关闭”;例外

Java 从URLClassLoader请求资源会导致;“压缩文件已关闭”;例外,java,url,classloader,Java,Url,Classloader,我正在使用一个应用程序,它通过getResourceAsStream方法定期从URLClassLoader请求资源。对于某些资源(不存在),这会导致以下异常,而不是返回null: java.lang.IllegalStateException: zip file closed at java.util.zip.ZipFile.ensureOpen(ZipFile.java:669) at java.util.zip.ZipFile.getEntry(ZipFile

我正在使用一个应用程序,它通过
getResourceAsStream
方法定期从
URLClassLoader
请求资源。对于某些资源(不存在),这会导致以下异常,而不是返回
null

java.lang.IllegalStateException: zip file closed
        at java.util.zip.ZipFile.ensureOpen(ZipFile.java:669)
        at java.util.zip.ZipFile.getEntry(ZipFile.java:309)
        at java.util.jar.JarFile.getEntry(JarFile.java:240)
        at sun.net.www.protocol.jar.URLJarFile.getEntry(URLJarFile.java:128)
        at java.util.jar.JarFile.getJarEntry(JarFile.java:223)
        at sun.misc.URLClassPath$JarLoader.getResource(URLClassPath.java:1005)
        at sun.misc.URLClassPath$JarLoader.findResource(URLClassPath.java:983)
        at sun.misc.URLClassPath.findResource(URLClassPath.java:188)
        at java.net.URLClassLoader$2.run(URLClassLoader.java:569)
        at java.net.URLClassLoader$2.run(URLClassLoader.java:567)
        at java.security.AccessController.doPrivileged(Native Method)
        at java.net.URLClassLoader.findResource(URLClassLoader.java:566)
        at java.lang.ClassLoader.getResource(ClassLoader.java:1093)
        at java.lang.ClassLoader.getResource(ClassLoader.java:1088)
        at java.lang.ClassLoader.getResource(ClassLoader.java:1088)
        at java.lang.ClassLoader.getResourceAsStream(ClassLoader.java:1304)
正如Google所披露的,这个错误似乎相当常见,经常被提及的原因是一个损坏的jar文件,在我的例子中,这是不太可能的。这可能是虚拟机中的一个bug,还是有其他已知但未记录的原因导致这种情况发生?调用
getResourceAsStream
方法时,似乎永远不会出现这种情况