java.lang.NoClassDefFoundError: com / hp / hpl / jena / shared / BadURIException при запуске сервлета - PullRequest
0 голосов
/ 04 августа 2009

Я получаю «java.lang.NoClassDefFoundError: com / hp / hpl / jena / shared / BadURIException» при запуске очень простого сервлета Ошибка указывает на инициализацию класса «Tagger». Код выглядит следующим образом

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import my.package.Tagger;

public class NormaliserServlet extends HttpServlet{
    public void doGet(HttpServletRequest req, HttpServletResponse response) throws IOException{
        Tagger pot = new Tagger("");

        response.setContentType("text");
        PrintWriter out = response.getWriter();
        out.println("hello");
        out.println(pot.someMethod());
        out.close();

        this.log("Request for normaliser");
    }
}

Файл war содержит файл jar, определяющий «Tagger» в WEB-INF / lib, и аналогичный вызов работает вне сервлета. Я не могу понять, в чем проблема. Файл web.xml тоже довольно стандартный:

<servlet>
    <servlet-name>normalise</servlet-name>
    <servlet-class>NormaliserServlet</servlet-class>
</servlet>
<servlet-mapping>
    <servlet-name>normalise</servlet-name>
    <url-pattern>/normalise</url-pattern>
</servlet-mapping>

Я использую winstone в качестве контейнера сервлета, но я получаю точно такую ​​же ошибку в tomcat. Трассировка стека:

java.lang.NoClassDefFoundError: com/hp/hpl/jena/shared/BadURIException
    at NormaliserServlet.doGet(NormaliserServlet.java:13)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:104)
    at javax.servlet.http.HttpServlet.service(HttpServlet.java:45)
    at winstone.ServletConfiguration.execute(ServletConfiguration.java:249)
    at winstone.RequestDispatcher.forward(RequestDispatcher.java:335)
    at winstone.RequestHandlerThread.processRequest(RequestHandlerThread.java:244)
    at winstone.RequestHandlerThread.run(RequestHandlerThread.java:150)
    at java.lang.Thread.run(Thread.java:619)

Ответы [ 3 ]

2 голосов
/ 04 августа 2009

Вам не хватает файлов jar из проекта Jena . Они должны быть в вашем файле WAR.

Это может быть косвенная зависимость какой-то другой библиотеки, которую вы используете. Посмотрите на трассировку стека и посмотрите, что еще находится между Дженой и вашим кодом.

1 голос
/ 04 августа 2009

Похоже, вам не хватает фляги для Jena (?), Которая определяет класс BadURIException. Включен ли этот jar в каталог WEB-INF / lib? Вы пытались посмотреть на распакованный файл войны в Winstone и проверить, все ли соответствующие банки там есть?

0 голосов
/ 04 августа 2009

Этот класс com / hp / hpl / jena / shared / BadURIException , предположительно созданный Tagger , отсутствует в пути к классу контейнера вашего сервлета.

Если он работает за пределами вашего контейнера сервлета, скорее всего, в вашей среде есть записи, определяющие classpath. Проверьте путь к классу и скопируйте недостающую библиотеку в каталог lib контейнера сервлета.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...