fastjson報錯java.lang.NoSuchMethodError: java.lang.Character.isSurrogate

開發新系統時,引用了fastjson組件,碰到報錯如下:
報錯信息:

org.springframework.web.util.NestedServletException: Handler dispatch failed; nested exception is java.lang.NoSuchMethodError: java.lang.Character.isSurrogate(C)Z

經排查fastjson源碼以及官方版本更新信息,發現

原因:

com\alibaba\fastjson\1.2.14\fastjson-1.2.14-sources.jar!\com\alibaba\fastjson\util\IOUtils.java
decodeUTF8() L703 使用了 Character.isSurrogate() 方法。
而這個方法在JDK6下的 Character 是沒有的(1.7以上支持),導致運行報錯 NoSuchMethodError。
經發現,使用的 fastjson-1.2.14 這個版本是在 JDK8 版本下編譯的。
所以是fastJson和jdk版本兼容性問題。

解決辦法:

  1. 更換fastJson 版本;新版本(以1.2.58爲例)的fastJson修改成了兼容1.6的寫法(還專門打了註釋://Character.isSurrogate© but 1.7)
  2. 升jdk到1.7以上。
發佈了170 篇原創文章 · 獲贊 64 · 訪問量 52萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章