JasperReports 4.1 + Hibernate 3.6 java.lang.NoSuchFieldError: BOOLEAN - PullRequest
2 голосов
/ 23 сентября 2011

Я получаю сообщение об ошибке, когда пытаюсь вызвать отчет в iReport 4.1.1.

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

Мы используем Hibernate 3.6 (JPA Annotations) и 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)

Кто-нибудь еще был в этой проблеме ?, как вы решили?

Спасибо.

Ответы [ 2 ]

4 голосов
/ 14 октября 2011

Даже я получаю ту же ошибку ... Это потому, что Hibernate 3.6 устарел "org.hibernate.Hibernate.BOOLEAN" (и другие подобные типы).Они объединили все типы в класс "org.hibernate.type.StandardBasicTypes".

Решение

Решение очень простое.

1) Загрузить все (с исходным кодом)) файл jasper tar.gz с домашнего сайта JasperReports

2) Разархивируйте файл (пусть это место будет называться $ JASPER_SOURCE)

3) vim $ JASPER_SOURCE / src / net / sf / jasperreports /engine / query / JRHibernateQueryExecuter.java

4) Добавьте следующую строку в верхние операторы импорта

import org.hibernate.type.StandardBasicTypes;

5) Теперь из строкиНачиная с 71 года все «Hibernate» заменяются на «StandardBasicTypes» (до конца статического блока, то есть до 84-й строки)

6) Сохраните и выйдите из редактора

7) Скопируйте последнюю версиюhibernate3.jar (версия 3.6.x) в папку "$ JASPER_SOURCE / lib"

8) Теперь выполните следующую команду ant из местоположения $ JASPER_SOURCE

ant jar

Youполучит модифицированный jar в каталоге lib / jasperreports-4.xxjarион.Используйте эту банку для вашего проекта

--------------- ИЛИ -------------------

Другое решение - использовать старый файл hibernate3.jar (версия 3.0.x) с вашим проектом

2 голосов
/ 02 мая 2012

Замените существующий файл hibernate3.jar на тот, который существует в пакете JasperReports.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...