这是Applet程序的代码
private String url="http://127.0.0.1:8080/printPdf.jhtml?data={printFuntion:{print_no:\"10010\",ora_code:\"8010\"},query:{loadingbill:\"ZCD00001855\",ora_code:\"8010\"}}";
public void printPdf(String path){
try {
URL url =new URL(this.url);
System.out.println("开始获取报表数据:"+url);
System.out.println( JRConstants.SERIAL_VERSION_UID);
//JasperPrint jasperPrint = (JasperPrint)new ObjectInputStream(url.openStream()).readObject();
Object jasperPrint=new ObjectInputStream(url.openConnection().getInputStream()).readObject();
System.out.println("完成获取报表数据"+jasperPrint.toString());
} catch (Exception e) {
e.printStackTrace();
}
}
这个是后程序处理的方法
@RequestMapping(value="/printPdf")
public void printPdf(HttpServletRequest request,HttpServletResponse response) throws Exception {
generationPDF.setExeSQL(connectionSQL);
//response.setContentType("application/octet-stream");
ObjectOutputStream oos =new ObjectOutputStream(response.getOutputStream());
PublicGetJasperPrint p =new PublicGetJasperPrint();
JasperPrint j =generationPDF.getJasperPrint(request);
oos.writeObject(j);
oos.flush();
oos.close();
}
我将JasperPrint 序列化到ObjectOutputStream 流中去了 然后在Applet用ObjectInputStream想反序列化出来JasperPrint对象却发现serialVersionUID版本不一致,确认的是同一个class文件JasperPrint 对象是net.sf.jasperreports.engine.JasperPrint 里面的!jre里面的jar和javaee里面的jar包是一致的!可是为什么无法反序列化读出来JasperPrint对象,一直提示serialVersionUID版本不对...难道是序列化的时候如果此类引用了其他类的话,其他类的serialVersionUID版本也需要一致? 我能猜到的也就只有这个原因了!感觉好奇怪? 目前还没有解决,由于项目中jasperreports的jar包太乱了,目前还在一个一个测试中! o(︶︿︶)o 唉
|
|