2017-04-10 10 views
2

私はScalaプロジェクトのWEKA 3.8 APIを使用しています。 SerializationHelper.write(fullFilename, model)を使用してモデルを保存しようとすると(次の例外が発生する)同じコードはWekaバージョン3.6でOKです。Weka 3.8.xのシリアル化エラー

私は、問題は、UpperSymmDenseMatrixがjava.io.Serializableインターフェイスを実装していないクラスだと言います。 問題の解決方法に関するヒントjava.io.NotSerializableException:事前に起因

で おかげjava.io.ObjectOutputStream.writeObject0でno.uib.cipr.matrix.UpperSymmDenseMatrix (ObjectOutputStream.java:1184)〜[NA:1.8.0_45] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)〜[na:1.8.0_45] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)〜[na:1.8.0_45] at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1432)〜[NA:1.8.0_45] java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178)で 〜[NA:1.8.0_45]

+0

java.io.NotSerializableException [javadoc](https://docs.oracle.com/javase/7/docs/api/java/io/NotSerializableException.html): 'インスタンスがシリアライズ可能である必要がある場合にスローされます。インターフェイス '。あなたのクラスの1つは直列化可能ではありません。それらをたくさん作成していない場合は、ケースクラスを使用してみてください。 –

+1

はい、あなたは正しいですが、直列化できないクラスは、コードベースの一部ではない 'no.uib.cipr.matrix.UpperSymmDenseMatrix'です。それはmatrix-toolkits-javaの中にあります。 – afijog

答えて

1

問題

は、私はこの問題は確かにマトリックス・ツールキット-javaのの修正版によるものであることを見つけることができました。 WEKA 3.8.1はMavenの中央リポジトリから1に比べてわずかに大きいバージョン1.0.4でマトリックス・ツールキット・ジャワのコピーが付属しています:

<groupId>com.googlecode.matrix-toolkits-java</groupId> 
<artifactId>mtj</artifactId> 
<version>1.0.4</version> 

ソリューション含ま

mtj.jarからweka-src.jarが私の問題を解決しました。

+0

ありがとうございます。私はそれを試してみましょう! – afijog

+0

これは問題を解決しました。ありがとう! – Mustafa

関連する問題