2017-04-10 81 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