Search code examples
javaeclipseservletsweka

How to fix this NoClassDefFoundError in my servlet


i am not able to run my data analysis servlet. i get always this error:

    > 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)

It seems to be a classpath problem, but i added the JAR file weka.jar in the build path and its in the WEB-INF/lib folder of my servlet project.

The Predictor class contains this code:

            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));
}
}

My System is an Eclipse IDE with a integrated Tomcat7 with OS Ubuntu 14.04

If i run this java file as an java project it seems to work. What i am doing wrong? Thanks for your help!


Solution

  • I think your library is missing(weka.core.Attribute). Right click on your project --- > Deployment Assembly --> Add --> Archive from file system (if your using external jar file). Once you added clean your project and rerun it.