ConcurrentHashMapフィールドを含むシリアル化可能なクラスがあります。ほとんどの場合、このクラスのシリアル化/逆シリアル化は完全に機能します。ただし、このクラスのシリアル化されたバージョンを含むファイルを受け取ったばかりであり、それを逆シリアル化しようとすると、次のようなエラーメッセージが表示されます。
Exception in thread "main" java.lang.NullPointerException
at java.util.concurrent.locks.ReentrantLock.lock(ReentrantLock.java:262)
at java.util.concurrent.ConcurrentHashMap$Segment.put(ConcurrentHashMap.java:417)
at java.util.concurrent.ConcurrentHashMap.put(ConcurrentHashMap.java:883)
at java.util.concurrent.ConcurrentHashMap.readObject(ConcurrentHashMap.java:1278)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at java.io.ObjectStreamClass.invokeReadObject(ObjectStreamClass.java:974)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1848)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.defaultReadFields(ObjectInputStream.java:1946)
at java.io.ObjectInputStream.readSerialData(ObjectInputStream.java:1870)
at java.io.ObjectInputStream.readOrdinaryObject(ObjectInputStream.java:1752)
at java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1328)
at java.io.ObjectInputStream.readObject(ObjectInputStream.java:350)
これはJVMのバグでしょうか?エラーは完全にjvmクラス内で発生します。