今天发布war时启动resin时,发现服务器报以下错误:
从日志内容可以看出,错误在服务器刚启动的时候就发生,所以可以确定问题并不是一个项目的逻辑有问题。而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包里,就出错了。