昨日困惑——Tomcat之应用不能启动!


由于我开发的是组件包,简单的说,就是jar,打包之后,我像往常以上上传至服务器,重启Tomcat。可无奈,小猫Tomcat很不配合,应用就是没起来,于是检查日志——catalina.out。
但令人失望的是,几乎什么都没有,就看到这么一个诡异的异常:
昨日困惑——Tomcat之应用不能启动!_第1张图片
貌似是CRC32校验失败!
第一反应,war包部署的项目有问题。干掉所有webapp下的war包,重启,还是这个错误!此时,我征询各路英雄与我共谋大计,但无人能解此魔咒!
定睛一看,
引用
at java.util.jar.JarInputStream.read(JarInputStream.java:177)
得,原来是jar错误!
重新用Maven打包,部署,重启,失败!
重新用Eclipse导出,打包,部署,重启,失败!
我心想,这是怎么了?!Tomcat没事玩我呢?!换只猫!失败!接近崩溃!错误依旧!
干脆,我也不用jar了,直接上class!部署,重启,失败!这次,catalina.out非常干脆,就说失败!
昨日困惑——Tomcat之应用不能启动!_第2张图片
太无敌了!!!看来看catalina.out是没指望了,瞅瞅localhost.log!
12112151_q10o.jpg
引用
Caused by: java.lang.ClassFormatError: Truncated class file

昨日困惑——Tomcat之应用不能启动!_第3张图片
虽说做Java时间不能算很长,但各种诡异的错误也见过了,就是没见过 Caused by: java.lang.ClassFormatError: Truncated class file,顿时无奈了!Truncated - 截断,怎么就截断了?!无奈,疯狂,重新编译,部署,重启,问题依旧,崩溃,多少有点职业挫败感!折腾一下午,就是没反应!!!嘛问题!
突然,想起网管最具实际意义的一句话——重启!
索性,重启本子!!!
就盯上那个ServiceImpl类了,重新编译,部署这个class!!!
昨日困惑——Tomcat之应用不能启动!_第4张图片
引用
Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service
这个错误太有乐了!
实现类ServiceImpl正常了,接口Service反而有问题,看看代码。嗯,有中文字符,导致UTF-8编码不对?!
重新编译这个接口,部署,重启,失败!不过这时候冒出来另一个类的异常,跟这个错误类似!!!问题找到了!!!
删除之前部署的class,重新编译,打包jar,部署,重启,成功!!!
内牛马面哪!!!

这是为啥呢?!
如果一开始Tomcat报告Zip错误时,能够指明发生错误的jar文件名,至少定位可以跟准确!当时我部署了一堆jar,还真不好说是自己打包的jar中的那个错误!!!
如果不是
引用
Caused by: java.lang.ClassFormatError: Illegal UTF8 string in constant pool in class file com/ver/service/Service
,我坚决想不出来问题所在!
仔细琢磨,就因为我当时更新了一个网卡驱动!就因为这个,导致系统编译字符编码不正确?!太诡异了!整整一下午,就这样被这个破驱动浪费了!!!
都是驱动惹得祸!!!
本来只是改条SQL,结果,差点把Tomcat给错杀了!!!汗!!!
以后更新驱动,一定老老实实的重启!!!还是网管的名言有实际意义!

转载于:https://my.oschina.net/mohaiyong/blog/221242

你可能感兴趣的:(昨日困惑——Tomcat之应用不能启动!)