現象
之前有一個項目測試環境部署成功,上線時tomcat啓動失敗。看了下 catalina.out日誌。由於當時未及時記錄,所以完整異常已經遺忘。部分異常如下:
org.apache.tomcat.util.bcel.classfile.ClassFormatException:
Invalid byte tag in constant pool: 19
定位
因爲代碼都一樣,所以應該是環境問題導致的。首先檢查了下測試環境和線上環境的tomcat版本,分別是8.0和7.4。開始懷疑tomcat版本的問題,想了想代碼中是否做了基礎代碼的修改。想起來升級了log4j-api到2.10.0。開始懷疑是tomcat和log4j-api不兼容。爲了確認,開始google,看到這篇博客Invalid byte tag in constant pool: 19,這時已經基本確認了。升級線上tomcat,重新部署,DONE!