如何修复我的servlet中的NoClassDefFoundError

时间:2014-11-29 09:45:53

标签: java eclipse servlets weka

我无法运行数据分析servlet。我总是得到这个错误:

    > javax.servlet.ServletException: Servlet execution threw an exception
    > root cause
    > 
    > java.lang.NoClassDefFoundError: weka/core/Attribute
    >   de.project.prediction.Predictor.<init>(Predictor.java:34)
    >   de.project.tests.AbfrageZulassungsberechnung.doPost(AbfrageZulassungsberechnung.java:56)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:641)
    >   javax.servlet.http.HttpServlet.service(HttpServlet.java:722)

这似乎是一个类路径问题,但我在构建路径中添加了JAR文件weka.jar,并在我的servlet项目的WEB-INF / lib文件夹中添加了它。

Predictor类包含以下代码:

            import java.util.ArrayList;
            import weka.classifiers.Classifier;
            import weka.core.Attribute;

    public class Predictor {
        private Formulardata formulardata = new Formulardata();
        public double result = 0;
    // Konstruktor
        public Predictor() throws Exception{
            ArrayList<Attribute> attribute = new ArrayList<Attribute>(29); // 29

    ArrayList<String> land = new ArrayList<String>();
    landHZB.add("fehlerhaft");
    landHZB.add("Schleswig-Holstein");
    landHZB.add("Hamburg");
    landHZB.add("Niedersachsen");
    landHZB.add("Bremen");
    landHZB.add("Nordrhein-Westfalen");
    landHZB.add("Hessen");
    landHZB.add("Rheinland-Pfalz");
    landHZB.add("Baden-Württemberg");
    landHZB.add("Bayern");
    landHZB.add("Saarland");
    landHZB.add("Berlin");
    landHZB.add("Brandeburg");
    landHZB.add("Mecklenburg-Vorpommern");
    landHZB.add("Sachsen");
    landHZB.add("Sachsen-Anhalt");
    landHZB.add("Thüringen");
    attribute.add(new Attribute("Land", land));
}
}

我的系统是一个Eclipse IDE,带有集成的Tomcat7和OS Ubuntu 14.04

如果我将这个java文件作为一个java项目运行它似乎工作。我做错了什么? 谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

我认为你的图书馆遗失了(weka.core.Attribute)。右键单击您的项目---&gt;部署组件 - &gt;添加 - &gt;从文件系统归档(如果使用外部jar文件)。添加完项目后,重新运行它。