1

コンピューター上の tomcat と sesame2.7.3 API を使用して SPARQL エンドポイントをローカルに作成したいのですが、問題が発生しました。自分のコンピューターにネイティブ データストアを正常に作成した後、そのデータストアに接続して SPARQL クエリを実行したいのですが、Java でコーディングすると、Tomcat から常に次のエラー メッセージが表示されます。

例外

javax.servlet.ServletException: Error instantiating servlet class com.jelly.web.RDFServlet
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:680)

根本的な原因

java.lang.NoClassDefFoundError: org/openrdf/repository/RepositoryException
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2437)
    java.lang.Class.getConstructor0(Class.java:2747)
    java.lang.Class.newInstance0(Class.java:328)
    java.lang.Class.newInstance(Class.java:310)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:680)

根本的な原因

java.lang.ClassNotFoundException: org.openrdf.repository.RepositoryException
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1680)
    org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1526)
    java.lang.Class.getDeclaredConstructors0(Native Method)
    java.lang.Class.privateGetDeclaredConstructors(Class.java:2437)
    java.lang.Class.getConstructor0(Class.java:2747)
    java.lang.Class.newInstance0(Class.java:328)
    java.lang.Class.newInstance(Class.java:310)
    org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
    org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
    org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:861)
    org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:606)
    org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489)
    java.lang.Thread.run(Thread.java:680)

私のサーブレットコードは次のとおりです。

import java.io.File;
import java.io.IOException;
import java.util.List;
import javax.servlet.RequestDispatcher;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.openrdf.repository.*;
import org.openrdf.repository.config.RepositoryConfig;
import org.openrdf.repository.config.RepositoryConfigException;
import org.openrdf.repository.config.RepositoryImplConfig;
import org.openrdf.repository.manager.LocalRepositoryManager;
import org.openrdf.repository.sail.config.SailRepositoryConfig;
import org.openrdf.sail.config.SailImplConfig;
import org.openrdf.sail.nativerdf.config.NativeStoreConfig;`

public class RDFServlet extends HttpServlet {       
    public RDFServlet() {
        super();
        // TODO Auto-generated constructor stub
    }


protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
    // TODO Auto-generated method stub
    String queryString = request.getParameter("queryInput");
    // create RDF model
    String DBDirectory = "/Users/ray/Documents/A04_Developer/12_PersonSearch/SesameDB";

    SailImplConfig backendConfig = new NativeStoreConfig();
    RepositoryImplConfig repositoryTypeSpec = new SailRepositoryConfig(backendConfig);

    try
    {
        LocalRepositoryManager manager = new LocalRepositoryManager(new File(DBDirectory));
        manager.initialize();
        String repositoryID = "personV0";
        RepositoryConfig config = new RepositoryConfig(repositoryID, repositoryTypeSpec);
        manager.addRepositoryConfig(config);
        Repository repo = manager.getRepository(repositoryID);
        RDFModel model = new RDFModel(repo);
        @SuppressWarnings("rawtypes")
        List solutions = model.queryRDF(repo, queryString);
        request.setAttribute("rdf", solutions);
        RequestDispatcher view = request.getRequestDispatcher("result.jsp");
        view.forward(request, response);
    } catch (RepositoryException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (RepositoryConfigException e)
    {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
}
}

私はこれに本当に混乱しています。誰か助けてもらえますか?前もって感謝します。

4

1 に答える 1

1

.jar ファイルを自分の /lib ディレクトリに追加すると、すべて問題ありません。

于 2013-08-30T07:28:54.087 に答える