Я не могу запустить свой сервлет данных. я получаю всегда эту ошибку:Как исправить это NoClassDefFoundError в моем сервлете
> 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 в пути сборки и его в WEB-INF/Lib папку моего сервлета проекта.
Класс Предиктор содержит этот код:
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 с ОС Ubuntu 14,04
Если я запустить этот Java файл как Java проекта, кажется, работает , Что я делаю неправильно? Спасибо за помощь!
Благодарим за помощь. Теперь он работает =) Но я не понимаю, почему работает обычное Java-приложение, если я просто включаю WEKA.jar в путь сборки, но сервлет должен добавить JAR также в сборку развертывания? У вас есть какой-нибудь намек, где я могу найти дополнительную информацию об этой проблеме? Я хотел бы понять свою ошибку ... – SheldonCooper
Обычное приложение запускается внутри вашего самого затмения, тогда как Webapps развертывается на сервере tomcat в качестве военного файла. Таким образом, ваш lib не будет доступен при его развертывании. Поэтому вам нужно добавить их вручную. Взгляните на [здесь] (http://stackoverflow.com/questions/11126044/difference-between-deployment-assembly-and-j2ee-module-dependencies-in-eclipse) – Sas