首页 > 解决方案 > 如何解决错误:无法初始化主类选择。ClustererExecution

问题描述

我想在 java 中使用 weka 做一些工作。我在 java 构建路径中添加了 weka-src.jar 和 weka-dev-3.7.10 jar,我的代码在运行之前没有显示任何错误。在我运行代码后,它给了我以下错误

Error: Unable to initialize main class selection.ClustererExecution
Caused by: java.lang.NoClassDefFoundError: weka/filters/Filter

这是我的代码:

    package selection;
    import weka.clusterers.ClusterEvaluation;
    import weka.clusterers.SimpleKMeans;

import weka.core.Instances;
import weka.core.converters.ConverterUtils.DataSource;
import weka.filters.*;
import weka.filters.unsupervised.attribute.Remove;

public class ClustererExecution {
    public static void main(String[] args) {
        try {
            //Loading data
            Instances data = DataSource.read("/Data_Cortex_Nuclear.arff");
            System.out.println("The number of attributes is: " + data.numAttributes() + " while the number of instances is: " + data.numInstances());
            data.setClassIndex(data.numAttributes()-1);
            System.out.println("The class index is: " + data.classIndex()); 
            //Create copy without class attribute
            Remove rem = new Remove();
            rem.setAttributeIndices("" + (data.classIndex() + 1));
            rem.setInputFormat(data);
            Instances dataClusterer = Filter.useFilter(data, rem);
            //Build clusterer
            SimpleKMeans clusterer = new SimpleKMeans();
            clusterer.setMaxIterations(100);
            clusterer.setNumClusters(8);
            clusterer.buildClusterer(dataClusterer);
            //Evaluate clusterer with original data
            ClusterEvaluation eval = new ClusterEvaluation();
            eval.setClusterer(clusterer);
            eval.evaluateClusterer(data);
            System.out.println(eval.clusterResultsToString());
        }
        catch(Exception e) {
            e.printStackTrace();
        }
    }
}

有谁知道如何解决这个错误?如果这有什么不同,我正在使用 eclipse。谢谢!

标签: javaweka

解决方案


正如 Zastai 在下面的评论中所说,您将 weka jar 添加到构建路径中,但相关的 weka jar 也需要在类路径中。


推荐阅读