2014-09-02 140 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後問題已解決。

相關問題