Ошибка Аякса и Йены - PullRequest
       37

Ошибка Аякса и Йены

1 голос
/ 22 ноября 2011

Когда я пытаюсь вызвать Джену, используя AJAX в моем сервлете, я получаю эту ошибку:

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)

Это мой код Йены:

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

Он работает нормально, но когда я вызываю эту функцию с помощью сервлета, я получаю ошибку, описанную ранее.

Это мой код сервлета:

@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");
}

Мой код Java-скрипта, который работает нормально:

$("#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 />");
  });
}

1 Ответ

1 голос
/ 23 ноября 2011

В поме я объявил старую версию Arq 1.8.7 вместо 2.8.7.Теперь он работает нормально.

...