IllegalArgumentException:无法序列化对象
IllegalArgumentException: Failed to serialize object
我需要实现 OSerializableStream 接口,以便将对象保存在 orientdb 数据库中。我使用 orientdb-community-1.7.4 版本并尝试在 spring 中使用 SerializationUtils 来序列化,反序列化对象。当我想序列化具有属性 Map<Integer, Collection<String>>
的对象时,我收到错误消息:
java.lang.IllegalArgumentException: Failed to serialize object
SocialRecord.java
package persistence.graphdb.socialNetwork;
import com.orientechnologies.orient.core.exception.OSerializationException;
import com.orientechnologies.orient.core.serialization.OSerializableStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.util.SerializationUtils;
public class SocialRecord implements OSerializableStream{
// all message keywords
private Map<Integer, Collection<String>> keywords = new HashMap<>();
public Map<Integer, Collection<String>> getKeywords() {
return keywords;
}
public void setKeywords(Map<Integer, Collection<String>> keywords) {
this.keywords = keywords;
}
@Override
public byte[] toStream() throws OSerializationException {
return SerializationUtils.serialize(this);
}
@Override
public OSerializableStream fromStream(byte[] bytes) throws OSerializationException {
return (OSerializableStream) SerializationUtils.deserialize(bytes);
}
}
当我创建 SocialRecord class 的一些对象并调用 toStream() 方法时,我得到 IllegalArgumentException。
SerializationUtils 可能需要一个实现 Serializable 的 class。
[edit] 在下面发表评论后,我现在认为问题是地图成员。将其类型更改为可序列化类型 HashMap,我相信问题会解决。
使用 HashMap 而不是它实现序列化程序。您可能还需要对您的 Collection 进行子类化,因为我发现更复杂的对象很棘手
我需要实现 OSerializableStream 接口,以便将对象保存在 orientdb 数据库中。我使用 orientdb-community-1.7.4 版本并尝试在 spring 中使用 SerializationUtils 来序列化,反序列化对象。当我想序列化具有属性 Map<Integer, Collection<String>>
的对象时,我收到错误消息:
java.lang.IllegalArgumentException: Failed to serialize object
SocialRecord.java
package persistence.graphdb.socialNetwork;
import com.orientechnologies.orient.core.exception.OSerializationException;
import com.orientechnologies.orient.core.serialization.OSerializableStream;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import org.springframework.util.SerializationUtils;
public class SocialRecord implements OSerializableStream{
// all message keywords
private Map<Integer, Collection<String>> keywords = new HashMap<>();
public Map<Integer, Collection<String>> getKeywords() {
return keywords;
}
public void setKeywords(Map<Integer, Collection<String>> keywords) {
this.keywords = keywords;
}
@Override
public byte[] toStream() throws OSerializationException {
return SerializationUtils.serialize(this);
}
@Override
public OSerializableStream fromStream(byte[] bytes) throws OSerializationException {
return (OSerializableStream) SerializationUtils.deserialize(bytes);
}
}
当我创建 SocialRecord class 的一些对象并调用 toStream() 方法时,我得到 IllegalArgumentException。
SerializationUtils 可能需要一个实现 Serializable 的 class。
[edit] 在下面发表评论后,我现在认为问题是地图成员。将其类型更改为可序列化类型 HashMap,我相信问题会解决。
使用 HashMap 而不是它实现序列化程序。您可能还需要对您的 Collection 进行子类化,因为我发现更复杂的对象很棘手