gpt4 book ai didi

java - HTTP 状态 500 - Servlet 执行抛出异常

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:45:39 27 4
gpt4 key购买 nike

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


}

最佳答案

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

如果您碰巧在 Eclipse IDE 中开发您的 servlet,请按以下步骤进行操作:

关于java - HTTP 状态 500 - Servlet 执行抛出异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25615874/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com