Отчет не будет загружаться из NetBeans JasperReports - PullRequest
0 голосов
/ 28 января 2012

Привет всем, кто это читает ....

Я уже несколько дней бьюсь головой о стену и стол ... Я создаю отчет с JasperReports в проекте netbeans. Я понятия не имею, что произошло, но в один момент это сработало, и в следующий раз у меня появилось 2 ПРЕДУПРЕЖДЕНИЯ, и теперь окно отчетов (Распечатка экрана) и распечатка PDF не будут загружаться, если код не запускается из среды разработки.

Вот предупреждения: log4j: ПРЕДУПРЕЖДЕНИЕ. Для регистратора не найдено никаких дополнений (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory). log4j: WARN Пожалуйста, правильно инициализируйте систему log4j.

Предупреждения генерируются этой строкой кода, которую я использую для составления отчета:

JasperReport jasperReport = JasperCompileManager.compileReport("C:/Report/report1.jrxml");

Весь блок кода, который используется для компиляции и генерации отчета, выглядит следующим образом:

public void Print_File() {
    try {
        String parameter = LoadNum_Text.getText();
        String RecordPath = "C:/Report/Created/LoadSheet/";

        String name = RecordPath + parameter;
        String destinationFile = name + ".pdf";

        Map param = new HashMap();

        param.put("Load_Number", parameter);

        con = DriverManager.getConnection(host, uName, uPass);

        String sql = "SELECT * FROM Load_Sheet";

        JasperReport jasperReport = JasperCompileManager.compileReport("C:/Report/report1.jrxml");
        JasperPrint jasperPrint = JasperFillManager.fillReport(jasperReport, param, con);
        JasperExportManager.exportReportToPdfFile(jasperPrint, destinationFile);//export dynamic file name
        //con.close();
        try {
            JasperViewer visor = new JasperViewer(jasperPrint, false);
            visor.setVisible(true);
        } catch (Exception e) {
            JOptionPane.showMessageDialog(null, e);
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }
}

Также мои предыдущие версии кода имеют ту же проблему, что и я, пытаясь откатиться к ним, и я также попробовал старую версию (что раньше было) рабочего файла report1.jrxml.

Я также попробовал другой сервер MYSQL, который у меня был запущен, где просто попытался выяснить, не является ли это потенциальной проблемой, но все же имел тот же конечный результат.

Я пытался просто импортировать библиотеки из самого IReport (программы, которую я использовал для создания отчета), но также безрезультатно.

Я также скачал и попробовал исходный код для JasperReport4.5.0, а также 3.0.1 также с еще меньшей пользой ...

Любая помощь, которую вы могли бы оказать, я был бы очень признателен ...

Ответы [ 3 ]

0 голосов
/ 10 декабря 2013

add

spring.jar file
spring-core-3.2.4.RELEASE
swingx-2007_10_07

Будет нормально работать после предупреждения, например ---

log4j:WARN No appenders could be found for logger (net.sf.jasperreports.engine.xml.JRXmlDigesterFactory).
log4j:WARN Please initialize the log4j system properly.
0 голосов
/ 05 октября 2017

Мы столкнулись с похожими проблемами при экспорте отчета через Jasper. В нашем приложении у нас есть версия spring-4.3.2.jar и jasperreports-5.6.1.jar.

Решение состоит в том, чтобы просто удалить эти константы из chartConstantsBean.xml, они все равно не могут быть использованы.

chartConstantsBean.xml находится в jasperreports-chart-themes-5.0.0.jar.

Мы удалили это, и оно работает без каких-либо ошибок или предупреждений.

0 голосов
/ 28 января 2012

добавьте следующий файл log4j.xml в ваш classpath:

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
<log4j:configuration xmlns:log4j='http://jakarta.apache.org/log4j/'>
    <appender name="CA" class="org.apache.log4j.ConsoleAppender">
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
        </layout>
    </appender>
    <appender name="FA" class="org.apache.log4j.FileAppender">
        <param name="File" value="myReport.log"/>
        <param name="Threshold" value="ALL"/>
        <layout class="org.apache.log4j.PatternLayout">
            <param name="ConversionPattern" value="%-4r [%t] %-5p %c %x - %m%n" />
        </layout>
    </appender>
    <root>
        <level value="ALL" />
        <appender-ref ref="CA" />
        <appender-ref ref="FA" />
    </root>
</log4j:configuration>

это должно решить log4j.xml WARN и дать вам больше информации о том, что происходит (посмотрите на myReport.log и, в конце концов, опубликуйте его здесьесли у вас все еще есть проблемы).


Привет, Эрик, я посмотрел на myReport.log и обнаружил следующие (все похожие) ошибки:

<code>5072 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'titleBaseFontSize': Invocation of init method failed; nested exception is 
<strong>java.lang.NoSuchFieldException: TITLE_BASEFONT_SIZE</strong>
5315 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'subtitleBaseFontSize': Invocation of init method failed; nested exception is 
<strong>java.lang.NoSuchFieldException: SUBTITLE_BASEFONT_SIZE</strong>
5610 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'legendBaseFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: LEGEND_BASEFONT_SIZE
5991 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'axisLabelFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: AXIS_LABEL_FONT_SIZE
6041 [AWT-EventQueue-0] DEBUG org.springframework.beans.factory.xml.XmlBeanFactory  - Ignoring bean creation exception on FactoryBean type check: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'axisTickLabelFontSize': Invocation of init method failed; nested exception is java.lang.NoSuchFieldException: AXIS_TICK_LABEL_FONT_SIZE
.....
.....
.....

так многоиз java.lang.NoSuchFieldException (что означает, что вызов времени выполнения Java для класса не может найти метод, что является довольно обычным делом, если версия конструктора отчетов jasper отличается от времени выполнения).Я подозреваю, что dev env отличается от вашей среды выполнения, поэтому, пожалуйста, дважды проверьте, одинакова ли версия отчетов jasper в этих двух средах.

Еще один тест, который вы можете выполнить, - это противостоять myReport.logиз dev env с myReport.log другого env и посмотрите, есть ли у вас исключение java.lang.NoSuchFieldException в обоих.(и вообще в чем отличия).Если вы обнаружите, что они различаются (например, вы не уловили java.lang.NoSuchFieldException ), то подозрение является почти фактом.

относительно

...