环境:linux , tomcat7 , jdk1.7, spring
现象:单独替换一个class , 重启tomcat ,正常启动,日志不报错;请求接口,日志没反应,接口返回404.
结论:替换的class 是1.8编译的,与服务器整体程序编辑jdk不一致。
检查方法:
如何通过class 查看jdk版本?
我们知道class文件是通过javac编译生成的,如果我们想知道是java的那个版本生成的,该怎么做?
很简单,Linux下只要使用od命令,如下:
od -x OutputController.class |head -n 20

前四个字节为固定的cafe babe,接下来的四个字节为次版本号(0000)和主版本号(00033)。
33:JDK1.7
32:JDK1.6
31:JDK1.5
30:JDK1.4
2F:JDK1.3
由此可知,该class是通过jdk1.7生成的。
本文探讨了在Linux环境下,使用Tomcat7和Spring框架中替换单个Class文件后导致接口返回404错误的问题。揭示了原因是替换的Class文件由不同版本的JDK编译,提供了一种通过od命令检查Class文件编译版本的方法。

1524

被折叠的 条评论
为什么被折叠?



