java程序单独运行正确,用jsp调用就出错
本人编写了一段java类程序,功能是将html网页保存为pdf格式,这个java类单独运行结果是正确的。但是如果把这段代码加入jsp中,让jsp页面调用,结果就出错,请各位大侠帮忙看一下。。。谢谢啦
JSP代码为:
<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ page import="format.conversion.HtmlToPdf" %>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<base href="<%=basePath%>">
<title>My JSP 'index.jsp' starting page</title>
<meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
<meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
<meta http-equiv="description" content="This is my page">
<!--
<link rel="stylesheet" type="text/css" href="styles.css">
-->
</head>
<body>
This is my JSP page. <br>
</body>
<%
HtmlToPdf htp=new HtmlToPdf();
htp.go();
%>
</html>
java类代码为:
package format.conversion;
import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import javax.swing.JFileChooser;
import javax.swing.filechooser.FileFilter;
import org.xhtmlrenderer.pdf.ITextFontResolver;
import org.xhtmlrenderer.pdf.ITextRenderer;
import com.lowagie.text.pdf.BaseFont;
public class HtmlToPdf {
public static void main(String[] args){
try{
HtmlToPdf tt=new HtmlToPdf();
tt.go();
System.out.println("pdf保存成功");
}catch(Exception ex){
System.out.println("pdf保存失败");
ex.printStackTrace();
}
System.exit(0);
}
public void go()throws Exception{
String inputFile = "WebRoot/Report.html";
String url = new File(inputFile).toURI().toURL().toString();
JFileChooser fileSave=new JFileChooser(".");
fileSave.showSaveDialog(null);
File file=fileSave.getSelectedFile();
String outputFile =file.toString();
String url1=new File(outputFile).toURI().toURL().toString();
System.out.println(url);
System.out.println(url1);
OutputStream os = new FileOutputStream(outputFile);
ITextRenderer renderer = new ITextRenderer();
renderer.setDocument(url);
ITextFontResolver fontResolver = renderer.getFontResolver();
fontResolver.addFont("C:/Windows/Fonts/SIMSUN.TTC", BaseFont.IDENTITY_H, BaseFont.NOT_EMBEDDED);
renderer.layout();
renderer.createPDF(os);
os.close();
}
}
出错信息:
HTTP Status 500 - An exception occurred processing JSP page /index.jsp at line 30
--------------------------------------------
type Exception report
message An exception occurred processing JSP page /index.jsp at line 30
description The server encountered an internal error that prevented it from fulfilling this request.
exception
org.apache.jasper.JasperException: An exception occurred processing JSP page /index.jsp at line 30
27: </body>
28: <%
29: HtmlToPdf htp=new HtmlToPdf();
30: htp.go();
31: %>
32: </html>
Stacktrace:
org.apache.jasper.servlet.JspServletWrapper.handleJspException(JspServletWrapper.java:568)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:455)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
javax.servlet.ServletException: java.lang.NoClassDefFoundError: org/xhtmlrenderer/pdf/ITextRenderer
org.apache.jasper.runtime.PageContextImpl.doHandlePageException(PageContextImpl.java:912)
org.apache.jasper.runtime.PageContextImpl.handlePageException(PageContextImpl.java:841)
org.apache.jsp.index_jsp._jspService(index_jsp.java:106)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.NoClassDefFoundError: org/xhtmlrenderer/pdf/ITextRenderer
format.conversion.HtmlToPdf.go(HtmlToPdf.java:44)
org.apache.jsp.index_jsp._jspService(index_jsp.java:97)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause
java.lang.ClassNotFoundException: org.xhtmlrenderer.pdf.ITextRenderer
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1714)
org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1559)
format.conversion.HtmlToPdf.go(HtmlToPdf.java:44)
org.apache.jsp.index_jsp._jspService(index_jsp.java:97)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:70)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:432)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:390)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:334)
javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.42 logs.
java jsp pdf
[解决办法]
java.lang.ClassNotFoundException: org.xhtmlrenderer.pdf.ITextRenderer
你的jar包没导过来吧
[解决办法]
所有的关联包,都要放到WEB-INF/lib下