昨天下午,我一直在调试程序,由于本地环境等等局限性问题,我只能在测试服务器上进行部署测试。期间,我的HP NoteBook提示我有更新驱动,我随即确认更新,继续修改我的BUG。
由于我开发的是组件包,简单的说,就是jar,打包之后,我像往常以上上传至服务器,重启Tomcat。可无奈,小猫Tomcat很不配合,应用就是没起来,于是检查日志——catalina.out。
但令人失望的是,几乎什么都没有,就看到这么一个诡异的异常:
[img]http://dl.iteye.com/upload/attachment/284837/54f860d6-c752-3a0b-b5e9-a4fdc9783151.jpg[/img]
貌似是CRC32校验失败!
第一反应,war包部署的项目有问题。干掉所有webapp下的war包,重启,还是这个错误!此时,我征询各路英雄与我共谋大计,但无人能解此魔咒! :(
定睛一看,[quote]at java.util.jar.JarInputStream.read(JarInputStream.java:177)[/quote]得,原来是jar错误!
重新用Maven打包,部署,重启,失败!
重新用Eclipse导出,打包,部署,重启,失败!
我心想,这是怎么了?!Tomcat没事玩我呢?!换只猫!失败!接近崩溃!错误依旧!
干脆,我也不用jar了,直接上class!部署,重启,失败!这次,catalina.out非常干脆,就说失败!
[img]http://dl.iteye.com/upload/attachment/284843/753065c1-ec11-3534-a79f-2a87cf8f8c95.jpg[/img]
太无敌了!!!看来看catalina.out是没指望了,瞅瞅localhost.log!
[img]http://dl.iteye.com/upload/attachment/284850/16b7668a-9b8a-3ec4-a04b-5460fda4f865.jpg[/img]
[quote]Caused by: java.lang.ClassFormatError: Truncated class file[/quote]
[img]http://dl.iteye.com/upload/attachment/284852/d9fd8f02-24c1-3e48-ad5d-8910dcdc7ac4.jpg[/img]
虽说做Java时间不能算很长,但各种诡异的错误也见过了,就是没见过[b]Caused by: java.lang.ClassFormatError: Truncated class file[/b],顿时无奈了!Truncated - 截断,怎么就截断了?!无奈,疯狂,重新编译,部署,重启,问题依旧,崩溃,多少有点职业挫败感!折腾一下午,就是没反应!!!嘛问题!
突然,想起网管最具实际意义的一句话——重启!
索性,重启本子!!!
就盯上那个ServiceImpl类了,重新编译,部署这个class!!!
[img]http://dl.iteye.com/upload/attachment/284862/5aac89b1-42d4-36a0-9225-8030655f75b4.jpg[/img]
[quote]Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service[/quote]这个错误太有乐了!
实现类ServiceImpl正常了,接口Service反而有问题,看看代码。嗯,有中文字符,导致UTF-8编码不对?! :(
重新编译这个接口,部署,重启,失败!不过这时候冒出来另一个类的异常,跟这个错误类似!!!问题找到了!!!
删除之前部署的class,重新编译,打包jar,部署,重启,成功!!!
内牛马面哪!!! :D
这是为啥呢?!
如果一开始Tomcat报告Zip错误时,能够指明发生错误的jar文件名,至少定位可以跟准确!当时我部署了一堆jar,还真不好说是自己打包的jar中的那个错误!!!
如果不是[quote]Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service[/quote],我坚决想不出来问题所在!
仔细琢磨,就因为我当时更新了一个网卡驱动!就因为这个,导致系统编译字符编码不正确?!太诡异了!整整一下午,就这样被这个破驱动浪费了!!!
都是驱动惹得祸!!!
本来只是改条SQL,结果,差点把Tomcat给错杀了!!!汗!!!
以后更新驱动,一定老老实实的重启!!!还是网管的名言有实际意义! :D
由于我开发的是组件包,简单的说,就是jar,打包之后,我像往常以上上传至服务器,重启Tomcat。可无奈,小猫Tomcat很不配合,应用就是没起来,于是检查日志——catalina.out。
但令人失望的是,几乎什么都没有,就看到这么一个诡异的异常:
[img]http://dl.iteye.com/upload/attachment/284837/54f860d6-c752-3a0b-b5e9-a4fdc9783151.jpg[/img]
貌似是CRC32校验失败!
第一反应,war包部署的项目有问题。干掉所有webapp下的war包,重启,还是这个错误!此时,我征询各路英雄与我共谋大计,但无人能解此魔咒! :(
定睛一看,[quote]at java.util.jar.JarInputStream.read(JarInputStream.java:177)[/quote]得,原来是jar错误!
重新用Maven打包,部署,重启,失败!
重新用Eclipse导出,打包,部署,重启,失败!
我心想,这是怎么了?!Tomcat没事玩我呢?!换只猫!失败!接近崩溃!错误依旧!
干脆,我也不用jar了,直接上class!部署,重启,失败!这次,catalina.out非常干脆,就说失败!
[img]http://dl.iteye.com/upload/attachment/284843/753065c1-ec11-3534-a79f-2a87cf8f8c95.jpg[/img]
太无敌了!!!看来看catalina.out是没指望了,瞅瞅localhost.log!
[img]http://dl.iteye.com/upload/attachment/284850/16b7668a-9b8a-3ec4-a04b-5460fda4f865.jpg[/img]
[quote]Caused by: java.lang.ClassFormatError: Truncated class file[/quote]
[img]http://dl.iteye.com/upload/attachment/284852/d9fd8f02-24c1-3e48-ad5d-8910dcdc7ac4.jpg[/img]
虽说做Java时间不能算很长,但各种诡异的错误也见过了,就是没见过[b]Caused by: java.lang.ClassFormatError: Truncated class file[/b],顿时无奈了!Truncated - 截断,怎么就截断了?!无奈,疯狂,重新编译,部署,重启,问题依旧,崩溃,多少有点职业挫败感!折腾一下午,就是没反应!!!嘛问题!
突然,想起网管最具实际意义的一句话——重启!
索性,重启本子!!!
就盯上那个ServiceImpl类了,重新编译,部署这个class!!!
[img]http://dl.iteye.com/upload/attachment/284862/5aac89b1-42d4-36a0-9225-8030655f75b4.jpg[/img]
[quote]Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service[/quote]这个错误太有乐了!
实现类ServiceImpl正常了,接口Service反而有问题,看看代码。嗯,有中文字符,导致UTF-8编码不对?! :(
重新编译这个接口,部署,重启,失败!不过这时候冒出来另一个类的异常,跟这个错误类似!!!问题找到了!!!
删除之前部署的class,重新编译,打包jar,部署,重启,成功!!!
内牛马面哪!!! :D
这是为啥呢?!
如果一开始Tomcat报告Zip错误时,能够指明发生错误的jar文件名,至少定位可以跟准确!当时我部署了一堆jar,还真不好说是自己打包的jar中的那个错误!!!
如果不是[quote]Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service[/quote],我坚决想不出来问题所在!
仔细琢磨,就因为我当时更新了一个网卡驱动!就因为这个,导致系统编译字符编码不正确?!太诡异了!整整一下午,就这样被这个破驱动浪费了!!!
都是驱动惹得祸!!!
本来只是改条SQL,结果,差点把Tomcat给错杀了!!!汗!!!
以后更新驱动,一定老老实实的重启!!!还是网管的名言有实际意义! :D