Tomcat報錯之Invalid byte tag in constant pool 19

版權聲明:本文爲 小異常 原創文章,非商用自由轉載-保持署名-註明出處,謝謝!
本文網址:https://blog.csdn.net/sun8112133/article/details/106765398


今天在做 SSH 整合的時候,在啓動 Tomcat 時報錯,經過查閱相關資料,終於把它解決了,順便來個總結吧。。。。


報錯提示:

org.apache.tomcat.util.bcel.classfile.ClassFormatException: Invalid byte tag in constant pool: 19

異常


大概意思是:

常量池中的無效字節標記:19


問題信息收集:

單純看報錯意思無法得知爲什麼會報這樣的錯誤以及如何去解決這個問題。我查閱了相關資料,並請教各路大神最終將問題定位到了 Lombok 身上。

我在 SSH 整合的時候,爲了方便開發,使用了 Lombok 這個小工具(大家可以參考:Lombok初體驗),恰恰 這個錯誤就是由於 Lombok 導致的。我這裏使用的是 lombok-1.18.8.jar 這個版本,而所用的服務器是 Tomcat 7.0,但我忽略了這兩個版本的兼容問題。

網上好像有人給 Lombok 提了 bug, 意思是 Tomcat 8.0 環境啓動讀取 module-info.class 報錯,然後一個作者回復:“我們加了 Java9 的 module-info 是有原因的, 應該換 Tomcat 版本或者給 Tomcat 提 bug 兼容這個”,大概意思是這樣。後面的發生的情節我也不得而知了,反正最終導致這兩個版本不兼容。


解決方案:

我這裏提供兩種解決方案,大家如果有更好的解決方案請在留言處告知我,謝謝!

  1. lombok-1.18.x 版本降低到 lombok-1.16.x 版本;
  2. 將 Tomcat 7.0 版本換成 Tomcat 8.0 版本。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章