java
runtime_error
ai_generated
true
java.io.NotSerializableException: com.example.MyClass
ID: java/not-serializable-exception
92%修复率
87%置信度
1证据数
2024-01-05首次发现
版本兼容性
| 版本 | 状态 | 引入 | 弃用 | 备注 |
|---|---|---|---|---|
| Java 8 | active | — | — | — |
| Java 11 | active | — | — | — |
| Java 17 | active | — | — | — |
| Java 21 | active | — | — | — |
根因分析
尝试序列化未实现 java.io.Serializable 接口的类的对象,通常发生在对象输出、RMI 或会话复制过程中。
English
An object of a class that does not implement java.io.Serializable is being serialized, typically during object output, RMI, or session replication.
官方文档
https://docs.oracle.com/en/java/javase/17/docs/api/java.base/java/io/NotSerializableException.html解决方案
-
Implement java.io.Serializable in the class: public class MyClass implements Serializable { private static final long serialVersionUID = 1L; } -
If the class cannot be modified, use a custom serialization mechanism like Jackson or writeExternal for Externalizable.
无效尝试
常见但无效的做法:
-
90% 失败
The serialVersionUID field is only relevant for Serializable classes; without implementing the interface, the exception persists.
-
80% 失败
Transient fields prevent serialization of those fields, but the class itself must still implement Serializable to be serialized.