error ajax and Jena

error ajax and Jena

本文关键字:Jena and ajax error      更新时间:2023-09-26

当我尝试在servlet中使用AJAX调用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)

这是我的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();}
}

它运行良好,但是当我使用servlet调用这个函数时,我得到前面描述的错误。

这是我的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");
}

我的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 />");
  });
}

在文章中我声明了旧版本的Arq 1.8.7而不是2.8.7。