ajax 和 Jena 错误

发布于 2024-12-17 23:07:21 字数 4367 浏览 2 评论 0原文

当我尝试在 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 />");
  });
}

When I try to call Jena using AJAX in my servlet I get this error:

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)

This is my Jena code:

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

It's running fine, but when I call this function using servlet I get the error described previously.

This is my servlet code:

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

My java script code that runs fine:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

寄离 2024-12-24 23:07:21

在 pom 中,我声明了旧版本的 Arq 1.8.7 而不是 2.8.7。现在运行良好。

In the pom I had declared the old version of Arq 1.8.7 instead of 2.8.7. Now it's running fine.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文