Java IllegalArgumentException:未能序列化对象

Java IllegalArgumentException:未能序列化对象,java,serialization,orientdb,Java,Serialization,Orientdb,我需要实现OSerializableStream接口,以便在数据库中保存对象。我使用orientdb-community-1.7.4版本,并尝试在spring中使用序列化utils来序列化、反序列化对象。当我想用属性Map序列化对象时,会收到错误消息: java.lang.IllegalArgumentException: Failed to serialize object SocialRecord.java package persistence.graphdb.socialNetwork

我需要实现OSerializableStream接口,以便在数据库中保存对象。我使用orientdb-community-1.7.4版本,并尝试在spring中使用序列化utils来序列化、反序列化对象。当我想用属性
Map
序列化对象时,会收到错误消息:

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);
    }

}
package persistence.graphdb.socialNetwork;
导入com.orientechnologies.orient.core.exception.OSerializationException;
导入com.orientechnologies.orient.core.serialization.OSerializableStream;
导入java.util.Collection;
导入java.util.HashMap;
导入java.util.Map;
导入org.springframework.util.SerializationUtils;
公共类SocialRecord实现OSerializableStream{
//所有消息关键字
私有映射关键字=新HashMap();
公共地图getKeywords(){
返回关键字;
}
公共关键字(地图关键字){
这个.关键词=关键词;
}
@凌驾
公共字节[]toStream()引发OSerializationException{
返回SerializationUtils.serialize(此);
}
@凌驾
公共OSerializableStream fromStream(字节[]字节)引发OSerializationException{
返回(OSerializableStream)序列化utils.反序列化(字节);
}
}

当我创建SocialRecord类的一些对象并调用toStream()方法时,我得到了IllegalArgumentException

SerializationUtils可能需要一个实现Serializable的类


[编辑]在下面的评论之后,我现在认为问题在于Map成员。将其类型更改为可序列化类型HashMap,我相信问题会得到解决。

使用HashMap,而不是在实现序列化程序时使用它。您可能还需要对集合进行子类化,因为我发现更复杂的对象很棘手

您是指serialize()方法的参数吗?我不这么认为,因为若我删除关键字属性,序列化就可以工作。试着将映射更改为HashMap。Map是一个不可序列化的接口。我试图为HashMap更改Map,但没有帮助。我试图为HashMap更改Map,但没有帮助