我遇到了与 xstream 和 IBM J9 jdk(32 位版本)不兼容的问题。当我使用 sun jdk 时一切正常,但在 IBM jdk 上失败(仅在 linux 上。在 Windows 上,两个 jdk 都可以)。
调试时,错误似乎是 xstream 在内部使用 java.util.TreeSet 但集合的迭代器以错误的顺序返回元素(我知道这听起来很奇怪,但这是我看到的行为)。谷歌搜索相关的错误并没有给出任何有意义的结果
我尝试升级几乎所有可能的组件,但没有运气。我尝试了以下配置:
- ibm jdk 1.6 SR 7(与 WebSphere 7.0.0.9 捆绑),xstream 1.2.2
- ibm jdk 1.6 SR 8,xstream 1.2.2
- ibm jdk 1.6 SR 8,xstream 1.3.1
(我用tomcat和WebSphere服务器都试过了,所以实际上有6种使用IBM jdk的配置)。
有问题的代码在com.thoughtworks.xstream.core.DefaultConverterLookup
第 44 行附近的 class 中。它使用来自 class 的迭代器com.thoughtworks.xstream.core.util.PrioritizedList
,该迭代器使用自定义比较器,但比较器所做的只是比较整数(优先级)。
有没有人见过这个?知道我能做什么或改变什么吗?