JasperReports 4.1+;Hibernate 3.6 java.lang.NoSuchFieldError:布尔值
我试图调用在iReport 4.1.1中生成的报告时出错JasperReports 4.1+;Hibernate 3.6 java.lang.NoSuchFieldError:布尔值,hibernate,jasper-reports,Hibernate,Jasper Reports,我试图调用在iReport 4.1.1中生成的报告时出错 Session sax = HibernateUtil.getSessionFactory().openSession(); Transaction transaction = sax.beginTransaction(); Map<String, Object> map = new HashMap<String, Object>(); map.p
Session sax = HibernateUtil.getSessionFactory().openSession();
Transaction transaction = sax.beginTransaction();
Map<String, Object> map = new HashMap<String, Object>();
map.put(JRHibernateQueryExecuterFactory.PARAMETER_HIBERNATE_SESSION, sax);
//map.put(, session);
String relativeWebPath = "/reports/factura_template1.jasper";
String absoluteDiskPath = getServletContext().getRealPath(relativeWebPath);
JasperPrint print = JasperFillManager.fillReport(new FileInputStream(new File(absoluteDiskPath)),map);
byte[] report = JasperExportManager.exportReportToPdf(print);
会话sax=HibernateUtil.getSessionFactory().openSession();
事务=sax.beginTransaction();
Map Map=newhashmap();
put(jrhbernateQueryExecuterFactory.PARAMETER\u HIBERNATE\u SESSION,sax);
//map.put(,session);
字符串relativeWebPath=“/reports/factura_template1.jasper”;
字符串absoluteDiskPath=getServletContext().getRealPath(relativeWebPath);
JasperPrint print=JasperFillManager.fillReport(新文件输入流(新文件(绝对磁盘路径)),map);
byte[]report=jaspeexportmanager.exportReportToPdf(打印);
我们使用Hibernate 3.6(JPA注释)和Jasperreports 4.1.1作为报告引擎,当我尝试调用报告时,出现以下异常:
java.lang.NoSuchFieldError: BOOLEAN
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.<clinit>(JRHibernateQueryExecuter.java:70)
at net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory.createQueryExecuter(JRHibernateQueryExecuterFactory.java:136)
at net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:724)
at net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:625)
at net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1238)
at net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:869)
at net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)
at net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:398)
at mx.com.facture.FactureApp.server.ReportExporter.ServletExporter.doGet(ServletExporter.java:198)
java.lang.NoSuchFieldError:布尔值
在net.sf.jasperreports.engine.query.JRHibernateQueryExecuter.(JRHibernateQueryExecuter.java:70)
在net.sf.jasperreports.engine.query.JRHibernateQueryExecuterFactory.createQueryExecuter(JRHibernateQueryExecuterFactory.java:136)
位于net.sf.jasperreports.engine.fill.JRFillDataset.createQueryDatasource(JRFillDataset.java:724)
位于net.sf.jasperreports.engine.fill.JRFillDataset.initDatasource(JRFillDataset.java:625)
net.sf.jasperreports.engine.fill.JRBaseFiller.setParameters(JRBaseFiller.java:1238)
位于net.sf.jasperreports.engine.fill.JRBaseFiller.fill(JRBaseFiller.java:869)
位于net.sf.jasperreports.engine.fill.JRFiller.fillReport(JRFiller.java:118)
位于net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:435)
位于net.sf.jasperreports.engine.JasperFillManager.fillReport(JasperFillManager.java:398)
在mx.com.facture.FactureApp.server.ReportExporter.ServletExporter.doGet(ServletExporter.java:198)
还有谁遇到过这个问题?你是怎么解决的
谢谢。即使是我也会遇到同样的错误。。。 这是因为Hibernate3.6不推荐使用“org.Hibernate.Hibernate.BOOLEAN”(以及其他类似类型)。 他们已将所有类型合并到“org.hibernate.type.StandardBasicTypes”类中 解决方案 解决方案非常简单 1) 从JasperReports主页下载整个(带源代码)jasper tar.gz文件 2) 卸载文件(将该位置称为$JASPER_SOURCE) 3) vim$JASPER_SOURCE/src/net/sf/jasperreports/engine/query/jrhbernatequeryexecuter.java 4) 在顶部的导入语句中添加以下行 导入org.hibernate.type.StandardBasicTypes 5) 现在从第71行开始,将所有“Hibernate”更改为“StandardBasicTypes”(直到静态块结束,即直到第84行) 6) 保存并退出编辑器 7) 将最新的hibernate3.jar(3.6.x版本)复制到“$JASPER_SOURCE/lib”位置 8) 现在从$JASPER_源位置执行以下ant命令 蚂蚁罐 您将在lib/jasperreports-4.x.x.jar位置获得修改后的jar。在你的项目中使用这个罐子 ---------------或-------------------
另一个解决方案是在项目中使用旧的hibernate3.jar文件(版本3.0.x)将现有的hibernate3.jar替换为JasperReports包中的hibernate3.jar。可能是您的查询没有返回模板中声明的字段。我认为这是一个好的解决方案。难以置信hibernate团队无法修补此问题。=)但如果我有maven项目,解决方案是什么?