Weka 3.8.x中的序列化错误

时间:2017-04-10 13:35:42

标签: java scala serialization weka

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

我想说问题是UpperSymmDenseMatrix是一个没有实现java.io.Serializable接口的类。 有关如何解决问题的任何提示? 提前致谢

Caused by: java.io.NotSerializableException: no.uib.cipr.matrix.UpperSymmDenseMatrix
    at java.io.ObjectOutputStream.writeObject0(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]
    at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1178) ~[na:1.8.0_45]

1 个答案:

答案 0 :(得分:1)

<强>问题

我设法发现问题确实是由 matrix-toolkits-java 的修改版本引起的。 Weka 3.8.1在1.0.4版本中附带了 matrix-toolkits-java 的副本,与maven中央存储库相比略大一些:

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

<强>解决方案

包含来自 weka-src.jar mtj.jar 而不是maven依赖项为我解决了这个问题。