在 JRockit VM 上运行 hessian 时,有没有人遇到过这个异常?
Caused by: java.lang.ArrayIndexOutOfBoundsException: -418
at com.caucho.hessian.util.IdentityIntMap.put(IdentityIntMap.java:141)
at com.caucho.hessian.io.Hessian2Output.addRef(Hessian2Output.java:1285)
at com.caucho.hessian.io.UnsafeSerializer.writeObject(UnsafeSerializer.java:157)
at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:421)
at com.caucho.hessian.io.CollectionSerializer.writeObject(CollectionSerializer.java:102)
at com.caucho.hessian.io.Hessian2Output.writeObject(Hessian2Output.java:421)
at com.caucho.hessian.io.UnsafeSerializer$ObjectFieldSerializer.serialize(UnsafeSerializer.java:293)
... 34 more
我花了一个多星期来解决这个问题,结果发现 hessian 在 HotSpot VM 上工作得很好,但在使用 JRockit VM 序列化某些对象时总是失败。我实际上想出了一个简单的修复方法,但它需要修改 IdentityIntMap.java 代码并更新 hessian jar 文件。