在web服务器启动时: java.util.zip.ZipException: error in opening zip file

今天发布war时启动resin时,发现服务器报以下错误:

[11:45:48.330] Host[] starting
[11:45:48.470] java.util.zip.ZipException: error in opening zip file
[11:45:48.470]  at java.util.zip.ZipFile.open(Native Method)
[11:45:48.470]  at java.util.zip.ZipFile.<init>(ZipFile.java:127)
[11:45:48.470]  at java.util.jar.JarFile.<init>(JarFile.java:135)
[11:45:48.470]  at java.util.jar.JarFile.<init>(JarFile.java:72)
[11:45:48.470]  at com.caucho.vfs.Jar.getJarFile(Jar.java:608)
[11:45:48.470]  at com.caucho.vfs.Jar.getManifest(Jar.java:207)
[11:45:48.470]  at com.caucho.vfs.JarPath.getManifest(JarPath.java:178)
[11:45:48.470]  at com.caucho.loader.JarEntry.readManifest(JarEntry.java:100)
[11:45:48.470]  at com.caucho.loader.JarEntry.<init>(JarEntry.java:91)
[11:45:48.470]  at com.caucho.loader.LibraryLoader.addJar(LibraryLoader.java:241)
[11:45:48.470]  at com.caucho.loader.LibraryLoader.fillJars(LibraryLoader.java:234)
[11:45:48.470]  at com.caucho.loader.LibraryLoader.init(LibraryLoader.java:178)
[11:45:48.470]  at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[11:45:48.470]  at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
[11:45:48.470]  at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
[11:45:48.470]  at java.lang.reflect.Method.invoke(Method.java:597)
[11:45:48.470]  at com.caucho.config.BeanTypeStrategy.init(BeanTypeStrategy.java:318)
[11:45:48.470]  at com.caucho.config.NodeBuilder.configureImpl(NodeBuilder.java:259)
[11:45:48.470]  at com.caucho.config.NodeBuilder.configureChildImpl(NodeBuilder.java:303)
[11:45:48.470]  at com.caucho.config.BeanTypeStrategy.configure(BeanTypeStrategy.java:197)
[11:45:48.470]  at com.caucho.config.SetterAttributeStrategy.configure(SetterAttributeStrategy.java:91)
[11:45:48.470]  at com.caucho.config.NodeBuilder.configureAttributeImpl(NodeBuilder.java:381)
[11:45:48.470]  at com.caucho.config.NodeBuilder.configureBeanImpl(NodeBuilder.java:341)
[11:45:48.470]  at com.caucho.config.TypeStrategy.configureBean(TypeStrategy.java:103)
[11:45:48.470]  at com.caucho.config.BeanTypeStrategy.configureBean(BeanTypeStrategy.java:228)

....

从日志内容可以看出,错误在服务器刚启动的时候就发生,所以可以确定问题并不是一个项目的逻辑有问题。而unwar之后的一个项目数据存在问题。

一开始以为是war包打包存在问题,所以清空各种缓存,确认各种设置,并重新加war包,发现在还是存在问题,启动之后还是报相同的Exception。

 

上网搜索相关Exception, 大部分的说法是: zip包存在问题,数据错误,所以导致打开zip的时候报Exception。

为了确认为什么打的war包会问题,就开始用ant的unwar命令打开war包,而不是由resin的来unwar,结果发现在unwar命令是成功的,并没有任何问题。

那么问题出在哪儿呢??

查看打包过后的整个项目里的各种数据资源,发现存在zip文件的地方只有WEB-INF/lib/里,实际上这些zip文件是不需要放在WEB-INF/lib/里的,是这里出问题了?? 尝试着把zip全部删除,然后再重启服务器, OK了!!!

 

由此可以看出resin加载项目的jar包里时,除了加载jar之外,还加载了zip包, 而此时在jar包的格式解析zip包里,就出错了。

posted @ 2012-12-21 21:38 傲行人生路 阅读(...) 评论(...) 编辑 收藏