JasperReport 打印问题
我用JasperReport在windows环境下调试成功的报表在Unix环境下报错。都是weblogic应用服务器。客户端java控制台报的错误如下:
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:140)
at JRPrinterApplet.start(JRPrinterApplet.java:41)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
NESTED BY :
java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:140)
at JRPrinterApplet.start(JRPrinterApplet.java:41)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
NESTED BY :
net.sf.jasperreports.engine.JRException: Error loading object from URL : http://oa.tjftz.gov.cn:9999/shareentbaseinfosuppportal?dowhat=999&nf=2007&yf=8&ri=1&jnf=2007&jyf=8&jri=30&creatuserid=13919
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:145)
at JRPrinterApplet.start(JRPrinterApplet.java:41)
at sun.applet.AppletPanel.run(Unknown Source)
at java.lang.Thread.run(Unknown Source)
Caused by: java.io.EOFException
at java.io.ObjectInputStream$PeekInputStream.readFully(Unknown Source)
at java.io.ObjectInputStream$BlockDataInputStream.readShort(Unknown Source)
at java.io.ObjectInputStream.readStreamHeader(Unknown Source)
at java.io.ObjectInputStream.<init>(Unknown Source)
at net.sf.jasperreports.engine.util.JRLoader.loadObject(JRLoader.java:140)
... 3 more
----------------------------------------------------
客户端代码
<OBJECT codeBase=lib/jinstall-1_5_0-windows-i586.cab#Version=1,5,0,0 height=0 width=0 classid=clsid:8AD9C840-044E-11D1-B3E9-00805F499D93>
<PARAM NAME="CODE" VALUE="JRPrinterApplet.class">
<PARAM NAME="ARCHIVE" VALUE="<%=request.getContextPath()%>/printer/printer.jar">');
<PARAM NAME="REPORT_URL" VALUE="<%=request.getContextPath()%>/shareentbaseinfosuppportal?dowhat=999&nf=<%=nf%>&yf=<%=yf%>&ri=<%=ri%>&jnf=<%=jnf%>&jyf=<%=jyf%>&jri=<%=jri%>&creatuserid=<%=creatid%>">
</OBJECT>
======================================================
服务器端
JasperPrint jasperPrint = null;
String relativePath = "/report/newreport.jasper"; //报表的相对路径,统一放在WEB应用程序的report路径下
String absolutePath = request.getSession().getServletContext().
getRealPath(relativePath); //绝对路径
BasicDB bdb = new BasicDB();
Connection conn = null;
conn = bdb.getConnection();
try {
jasperPrint = JasperFillManager.fillReport(absolutePath, props,conn);
//JasperRunManager.runReportToHtmlFile(absolutePath,props,new JREmptyDataSource());
ServletOutputStream ouputStream = response.getOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(ouputStream);
oos.writeObject(jasperPrint); //将JasperPrint对象写入对象输出流中
oos.flush();
oos.close();
}
catch (JRException e) {
e.printStackTrace();
}