HTTP状态500 - Servlet执行引发异常

问题描述 投票:3回答:4

我在servlet中调用java类时遇到此错误。

这是错误。

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.

这是我的java类的代码,它将使用SPARQL从RDF文件获取记录,并将在控制台中以JSON格式返回输出,然后我将捕获输出并将其转换为字符串,因此我可以使用该字符串进入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;

        }

}

这是一个servlet代码,它将在浏览器中显示输出。

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


}
java web-services servlets jena semantic-web
4个回答
4
投票

找到.jar for com / hp / hpl / jena / query / QueryFactory并将其放在.war文件中的WEB-INF lib中。

如果你碰巧在Eclipse IDE中开发servlet,那么如何做到这一点:


1
投票

您错过了类路径中包含类jarcom.hp.hpl.jena.query.QueryFactory文件。请将其添加到您的包/类路径中


1
投票

在tomcat home lib和web-inf lib中添加ojdbc6.jar后问题已得到解决。


0
投票

HTTP状态500 - Servlet执行引发异常

因为我得到了相同的servlet异常错误..从tomcat 6升级到8。

在tomcat home lib和web-inf lib中添加ojdbc6.jar后问题已得到解决。

© www.soinside.com 2019 - 2024. All rights reserved.