2014-11-29 3 views
1

Я не могу запустить свой сервлет данных. я получаю всегда эту ошибку:Как исправить это 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 проекта, кажется, работает , Что я делаю неправильно? Спасибо за помощь!

ответ

1

Я думаю, что ваша библиотека отсутствует (weka.core.Attribute). Щелкните правой кнопкой мыши на своем проекте ---> Развертывание сборки -> Добавить -> Архив из файловой системы (если вы используете внешний файл jar). После того, как вы добавили чистый проект и перезапустите его.

+0

Благодарим за помощь. Теперь он работает =) Но я не понимаю, почему работает обычное Java-приложение, если я просто включаю WEKA.jar в путь сборки, но сервлет должен добавить JAR также в сборку развертывания? У вас есть какой-нибудь намек, где я могу найти дополнительную информацию об этой проблеме? Я хотел бы понять свою ошибку ... – SheldonCooper

+0

Обычное приложение запускается внутри вашего самого затмения, тогда как Webapps развертывается на сервере tomcat в качестве военного файла. Таким образом, ваш lib не будет доступен при его развертывании. Поэтому вам нужно добавить их вручную. Взгляните на [здесь] (http://stackoverflow.com/questions/11126044/difference-between-deployment-assembly-and-j2ee-module-dependencies-in-eclipse) – Sas

Смежные вопросы