簡體   English   中英

java.lang.NoClassDefFoundError:com / hp / hpl / jena / shared / BadURIException在運行servlet時

[英]java.lang.NoClassDefFoundError: com/hp/hpl/jena/shared/BadURIException on running servlet

運行非常簡單的servlet時,出現“ 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文件包含WEB-INF / lib中定義“ Tagger”的jar文件,並且在Servlet之外進行了類似的調用。 我似乎找不到問題所在。 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作為servlet容器,但是在Tomcat中卻得到了完全相同的錯誤。 stacktrace是:

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)

您缺少Jena項目中的jar文件。 它們應該在您的WAR文件中。

它可能是您使用的其他某些庫的間接依賴項。 看一下堆棧跟蹤,看看在Jena和您的代碼之間還有什么。

看來您缺少定義了BadURIException類的Jena(?)的jar。 該jar也包含在您的WEB-INF / lib目錄中嗎? 您是否嘗試過查看Winstone中解壓縮的戰爭文件並檢查相關的罐子是否都在那里?

大概由Tagger實例化的此類com / hp / hpl / jena / shared / BadURIException類不在您的servlet容器的類路徑中。

如果它在servlet容器之外工作,則可能是環境中有定義類路徑的條目。 檢查類路徑,然后將缺少的lib復制到servlet容器的lib目錄中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM