项目小功能升级,测试环境使用tomcat部署编译后的class,启动tomcat容器,报错替换进去的class it is not a java .class file,报错如下
使用其他容器运行并没有这个问题,猜测可能与tomcat中间件加载文件有关,
在这个连接看到tomcat加载class时的classParser.readId方法代码,如下
使用readInt判断了class文件的文件类型,不等于0xCAFEBABE则会报错
据此猜测可能编译出的class文件readInt值不等于0xCAFEBABE,写main方法测试,结果如下
两值确实不相等,导致tomcat启动校验文件类型错误
重新编译,使用上述方法测试,得出两值相等后重新替换,服务可正常启动,具体第一次编译为啥会出现类型错误原因待查。。。



