D'État HTTP 500 - Servlet exécution généré une exception

J'obtiens ce message d'erreur lors de l'appel d'une classe java dans le servlet.

Voici l'erreur.

type Exception report
message Servlet execution threw an exception
description The server encountered an internal error that prevented it from fulfilling this request.
exception
javax.servlet.ServletException: Servlet execution threw an exception
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.NoClassDefFoundError: com/hp/hpl/jena/query/QueryFactory
com.complexible.common.csv.MuseumData.gts(MuseumData.java:109)
com.complexible.common.csv.MuseumData.ass(MuseumData.java:89)
com.complexible.common.csv.MuseumRDF.doGet(MuseumRDF.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
root cause
java.lang.ClassNotFoundException: com.hp.hpl.jena.query.QueryFactory
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1720)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1571)
com.complexible.common.csv.MuseumData.gts(MuseumData.java:109)
com.complexible.common.csv.MuseumData.ass(MuseumData.java:89)
com.complexible.common.csv.MuseumRDF.doGet(MuseumRDF.java:48)
javax.servlet.http.HttpServlet.service(HttpServlet.java:620)
javax.servlet.http.HttpServlet.service(HttpServlet.java:727)
org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.55 logs.

Voici un code de ma classe java qui permettra d'obtenir l'enregistrement à partir d'un fichier RDF en utilisant SPARQL et sera de retour la sortie au format JSON dans la console, puis après je voudrais prendre la sortie et convertir dans la chaîne donc je pourrais utiliser cette chaîne dans la servlet.

package com.complexible.common.csv;
import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.PrintStream;
import java.lang.NoClassDefFoundError;
import com.hp.hpl.jena.query.Query;
import com.hp.hpl.jena.query.QueryExecution;
import com.hp.hpl.jena.query.QueryExecutionFactory;
import com.hp.hpl.jena.query.QueryFactory;
import com.hp.hpl.jena.query.ResultSet;
import com.hp.hpl.jena.query.ResultSetFormatter;
import com.hp.hpl.jena.rdf.model.Model;
import com.hp.hpl.jena.rdf.model.ModelFactory;
public class MuseumData {
public static void main( String[] args ) throws IOException {
String output=getrec();
System.out.println(output);
}
public static String getrec() throws IOException 
{
String spr="prefix rdf:  <http://www.w3.org/1999/02/22-rdf-syntax-ns#>\n"+ 
"prefix rdfs: <http://www.w3.org/2000/01/rdf-schema#>\n"+
"prefix crm:  <http://www.cidoc-crm.org/cidoc-crm/>\n"+        
"prefix owl: <http://www.w3.org/2002/07/owl#>\n"+
"prefix xsd: <http://www.w3.org/2001/XMLSchema#>\n"+
"prefix crm: <http://www.cidoc-crm.org/rdfs/cidoc_crm_v5.0.4_official_release.rdfs#>\n"+       
"\n"+
//?title ?person ?type instead of *
"SELECT  * WHERE   { <http://phdprototype.tk/collectionimage/4D0BFF17-5810-4644-A550-D35EE090D4A8.png>"+
"crm:P3_has_note ?title ; "+
"crm:E21_Person ?person ;"+
"crm:E62_String ?type ;"+
"crm:P82_at_some_time_within ?year;"+
"crm:P33_used_specific_technique ?material;}";
Query query = QueryFactory.create(spr);
Model model = ModelFactory.createDefaultModel();
File f = new File("J:/Museum/data.rdf");
model.read(new FileInputStream(f), "RDF/XML");
//model.write(System.out, "TTL");
final QueryExecution exec = QueryExecutionFactory.create(query, model);
//ResultSetFormatter.out(System.out, exec.execSelect(), query);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
//IMPORTANT: Save the old System.out!
PrintStream old = System.out;
//Tell Java to use your special stream
System.setOut(ps);
//Print some output: goes to your special stream
ResultSetFormatter.outputAsJSON(System.out, exec.execSelect());
//Put things back
System.out.flush();
System.setOut(old);
//Show what happened
//return baos.toString();
String gcr=baos.toString();
return gcr;
}
}

Voici une servlet code qui permet d'afficher le résultat dans un navigateur.

protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//TODO Auto-generated method stub
PrintWriter out= response.getWriter();
String rec=MuseumData.getrec();
out.print(rec);
}

OriginalL'auteur Ravi Vyas | 2014-09-02