Question

I want to create a SPARQL endpoint locally with tomcat on my computer and sesame2.7.3 apis, there is a problem I encountered. After I have successfully created a native datastore on my computer, I want to connect to that datastore and execute SPARQL queries on it, and I code in Java, I constantly get the following error message from Tomcat.

exception

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)

root cause

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)

root cause

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)

My Servlet code is as following:

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();
    }
}
}

I'm really confused by this, can anyone help me? Thanks in advance.

Was it helpful?

Solution

I add the .jar files into my own /lib directory, then everything is OK.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top