Kryo序列化拒绝注册课程

kbi*_*irk 7 scala kryo

我正在尝试使用kryo序列化:

kryo.setRegistrationRequired(true);
Run Code Online (Sandbox Code Playgroud)

我一直收到以下错误,说某个类没有注册:

java.lang.IllegalArgumentException: Class is not registered: com.my.package.MyClass[]
Note: To register this class use: kryo.register(com.my.package.MyClass[].class);
Run Code Online (Sandbox Code Playgroud)

但是,我注册了它:

kryo.register(classOf[MyClass[_]])
Run Code Online (Sandbox Code Playgroud)

当我设置Log.TRACE()时,我得到以下输出:

00:11 TRACE: [kryo] Register class ID 51: com.my.package.MyClass (com.esotericsoftware.kryo.serializers.FieldSerializer)
Run Code Online (Sandbox Code Playgroud)

当跟踪记录器打印出已注册时,为什么说它没有注册.我找不到有关此事的任何有用文件.有谁之前经历过这个吗?如果它有助于我运行Apache Spark v0.8.1

kbi*_*irk 12

我弄清楚问题是什么.我错误地将scala通用语法[]的java数组语法[].由于我没有注册MyClass数组,因此抛出异常.

所以在java中

kryo.register( MyClass[].class );
Run Code Online (Sandbox Code Playgroud)

斯卡拉

kryo.register( classOf[ Array[ MyClass[_] ] ] )
Run Code Online (Sandbox Code Playgroud)