2017-04-05 21 views
1

我想在判別分析軟件包以便使用MultiClassFLDA但我總是上運行的代碼中的錯誤和定義MultiClassFLDA類的新實例Weka的DiscriminantAnalysis的NoClassDefFoundError

Exception in thread "main" java.lang.NoClassDefFoundError: no/uib/cipr/matrix/Vector 
    at assignment2.face.tryLDA(face.java:141) 
    at assignment2.Assignment2.main(Assignment2.java:106) 
Caused by: java.lang.ClassNotFoundException: no.uib.cipr.matrix.Vector 
    at java.net.URLClassLoader.findClass(URLClassLoader.java:381) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424) 
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) 
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357) 

回答

1

這似乎是與一些動態類加載在更新版本的Weka中,可能在Weka包管理器中:該類在mtj.jar中定義,該類被捆綁在內部 內。建議在that other question,an answer中提取mtj.jar並將其添加到您的類路徑中。

由於我沒有這個問題與其他過濾器,我的猜測是,MultiClassFLDA沒有正確實施:我發現是,如果你之前使用其他過濾器,特定類將被裝載:

// Run a dummy Filter for correct initialization 
Filter f = new Standardize(); 
f.setInputFormat(data); 
Filter.useFilter(new Instances("", params, 0), f); // Dummy run on empty dataset 
// Now run the MultiClassFLDA 
f = new MultiClassFLDA(); 
f.setInputFormat(data); 
data = Filter.useFilter(data, f); 

NB這是一個非常醜陋的黑客!我用它來工作。當我找到合適的方法來完成它時,我會編輯我的答案(除了從Weka itlef提取jar)。