2014-09-02 674 views
3

我在调用servlet中的java类时出现此错误。HTTP状态500 - Servlet执行引发异常

这是错误。

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


} 

回答

1

你已经错过了jar文件包含在类路径中的类com.hp.hpl.jena.query.QueryFactory。请将其添加到您的包/类路径中

+0

我添加arq jar但我的问题是不resloved – umapathi 2017-06-21 18:20:27

0

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

正如我得到相同的servlet异常错误..从tomcat 6升级到8。

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

相关问题