2017-04-10 78 views
2

我正在使用我的Scala项目中的WEKA 3.8 API。当我尝试使用SerializationHelper.write(fullFilename, model)保存模型(已经构建分类器)时,我收到以下异常。与Weka版本3.6相同的代码是可以的。Weka中的序列化错误3.8.x

我想说问题在于UpperSymmDenseMatrix是一个不实现java.io.Serializable接口的类。 有关如何解决该问题的任何提示?预先 感谢

引起:java.io.NotSerializableException:在java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1184)no.uib.cipr.matrix.UpperSymmDenseMatrix 〜[NA:1.8.0_45] at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1509)〜[na:1.8.0_45] at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1548)〜[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):'当实例需要具有Seri​​alizable时抛出interface'。你的一个类不是可序列化的,如果你没有创建大量的类,就尝试使用case类。 –

+1

是的,你是对的,但不可序列化的类是'no.uib.cipr.matrix.UpperSymmDenseMatrix',它不是我的代码库的一部分。它在matrix-toolkits-java里面。 – afijog

回答

1

问题

我设法找到了这个问题确实是的矩阵工具包的Java修改版本引起的。 WEKA 3.8.1带有在1.0.4版本的矩阵的工具包的Java拷贝相比,一个从行家中央储存库是稍大:

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

包含mtj.jar from weka-src.jar代替maven依赖为我解决了这个问题。

+0

谢谢。我会试一下! – afijog

+0

这照顾到了这个问题。谢谢! – Mustafa