在Java中序列化期间没有获得有效的构造函数错误

时间:2016-12-15 10:33:35

标签: java serialization apache-flink

我正在试图序列化我的类RowSerializable以便在DataSet中使用它但我收到此错误

"无法读取用户代码包装器:es.foo.flink.Utils.RowSerializable;没有有效的构造函数"

public class RowSerializable extends Row implements Serializable {

   private Object[] fields2;

   public RowSerializable(int arity){
       super(arity);
       this.fields2 = new Object[arity];
   }
   public RowSerializable(){
       super(0);
   }
}

起初我没有创建非arg构造函数,所以我做了,但我仍然有同样的错误

1 个答案:

答案 0 :(得分:0)

仅供那些需要参考的人使用。正如EJP明确指出的那样,我们需要为POJO类添加no-args构造函数,我们希望使用自定义Serializer进行序列化。

这是Sample POJO class - Record.java

这是Sample Custom Serializer Class - RecordSerializer.java

要使用上面的POJO和Custom Serializer,我们需要在执行环境中注册这些。

以下是该

的示例代码
final ExecutionEnvironment env = ExecutionEnvironment.getExecutionEnvironment();
    env.getConfig().registerTypeWithKryoSerializer(Record.class, RecordSerializer.class);

以下是指向完整code的链接。