8

私は kryo シリアライゼーションを次のように使用しようとしています:

kryo.setRegistrationRequired(true);

特定のクラスが登録されていないという次のエラーが表示され続けます。

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

しかし、私はそれを登録します:

kryo.register(classOf[MyClass[_]])

Log.TRACE() を設定すると、次の出力が得られます。

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

トレースロガーが登録されていることを出力するときに、登録されていないと言うのはなぜですか。この問題に関する有用なドキュメントが見つかりません。誰もこれを経験したことがありますか?それが役立つ場合、私はApache Spark v0.8.1を実行しています

4

1 に答える 1

13

私は問題が何であるかを理解しました。java 配列構文 [] を scala 汎用構文 [] と間違えていました。MyClass の配列を登録しなかったため、例外がスローされていました。

だからJavaで

kryo.register( MyClass[].class );

そしてスカラ

kryo.register( classOf[ Array[ MyClass[_] ] ] )
于 2014-03-03T19:03:33.650 に答える