我在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]
答案 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依赖项为我解决了这个问题。