2011-11-22 4 views
1

Quand je tente d'appeler Jena en utilisant AJAX dans mon servlet je reçois cette erreur:erreur ajax et Jena

java.lang.ClassNotFoundException: com.hp.hpl.jena.sparql.core.Prologue 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1516) 
at org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1361) 
at fr.objective.blogomatic.semantic.web.ServletAjax.doGet(ServletAjax.java:40) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:617) 
at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290) 
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206) 
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233) 
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191) 
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109) 
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
at org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:852) 
at org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588) 
at org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
at java.lang.Thread.run(Unknown Source) 

Ceci est mon code Jena:

class classUsingJena { 
public void execute(){ 

String queryString = PREFIXES 
         + " Select ?label " 
         + " where {" 
         + " ?description j.5:entity-label ?label ."      + " } "; 

Query query = QueryFactory.create(queryString); 
QueryExecution qe = QueryExecutionFactory.create(query, model); 
ResultSet results = qe.execSelect(); 
ResultSetFormatter.out(System.out,results, query); 
qe.close();} 
} 

Il fonctionne très bien, mais quand je appelez cette fonction en utilisant servlet je reçois l'erreur décrite précédemment.

Ceci est mon code servlet:

@Override 
protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 
    String service = req.getParameter("service"); 
      classUsingJena jena= new classUsingJena() //bug 
    return;} 
@Override 
protected void doPost(HttpServletRequest req, HttpServletResponse resp) 
     throws ServletException, IOException { 
    doGet(req, resp); 
} 

@Override 
public void init() throws ServletException { 
    ServletConfig config = getServletConfig(); 
    urlAjax = config.getInitParameter("urlAjax"); 
} 

Mon code java script qui fonctionne très bien:

$("#Analyser").click(function(){ 

     var article = $("#TxtArea").val(); 
     ajaxFunction("acteur",article); 

     console.log(article); 
    }); 
function getXMLObject() //XML OBJECT 
{ 
    var xmlHttp = false; 
    try { 
     xmlHttp = new ActiveXObject("Msxml2.XMLHTTP") // For Old Microsoft Browsers 
     } 
    catch (e) { 
     try { 
      xmlHttp = new ActiveXObject("Microsoft.XMLHTTP") // For Microsoft IE 6.0+ 
      } 
    catch (e2) { 
     xmlHttp = false // No Browser accepts the XMLHTTP Object then false 
     } 
    } 

    if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { 
     xmlHttp = new XMLHttpRequest();  //For Mozilla, Opera Browsers 
    } 
    return xmlHttp; // Mandatory Statement returning the ajax object created 
} 

var xmlhttp = new getXMLObject(); //xmlhttp holds the ajax object 



function ajaxFunction(valeur,txt) { 

    if(xmlhttp) { 
     xmlhttp.open("GET","ajax?service=ajax&valeur="+valeur+"&text="+txt,true); 
     xmlhttp.onreadystatechange = handleServerResponse; 
     xmlhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
     xmlhttp.send(null); 
     } 
} 



function handleServerResponse() { 

    if (xmlhttp.readyState == 4) { 
     if(xmlhttp.status == 200) { 
      $("#J").text(""); 
      parseXml(xmlhttp.responseXML); 
     } 
     else { 
      //alert("Error during AJAX call. Please try again"); 
     } 
    } 
} 

function parseXml(xml) 
{ 
    $(xml).find("nom").each(function() 
    { 
    $("#J").append($(this).text() + "<br />"); 
    }); 
} 
+0

Il semble qu'il vous manque l'option 'public' lorsque vous déclarez la classe. Est-ce juste une erreur dans la question? – Pointy

+0

c'est de la classe publique, j'oublie juste ajouter public dans ce commentaire, désolé. mais j'ai résolu ce problème. dans le pom j'ai déclaré l'ancienne version de Arq 1.8.7 au lieu de 2.8.7. Maintenant ça marche bien :) – Allel

Répondre

1

Dans la pom j'avais déclaré l'ancienne version de Arq 1.8.7 au lieu de 2,8. 7. Maintenant ça fonctionne bien.