結構JVMのライブラリのImplって変わるものなのね・・・
javassistを使っているライブラリで、WAS6.1でのみエラーが起きる現象に当たった。
問題となったのは、HashMapとLinkedHashMapの辺りで、JVM間の実装の仕方が結構違うことに起因してるっぽい。
違いは山のようにあるのだが、下記はその違いの一例。
WAS7 HashMap
public class HashMap<K, V> extends AbstractMap<K, V> implements Map<K, V>, Cloneable, Serializable { //色々省略・・・・・ // MapEntryというクラスを継承。MapEntryはインナークラスじゃない。 static class Entry<K, V> extends MapEntry<K, V> {
WAS6 HashMap
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable { //色々省略・・・・・ // Mapインターフェースのインナークラス //(インナーインターフェース?)を使用。 // SUNのクラスもこんな感じ static class Entry<K,V> implements Map.Entry<K,V> {
結構、バージョン、ベンダーによって変わるもんだよな〜と思いました。