BIRT:如何使用RE API生成和保存PDF格式的报告

时间:2017-09-13 15:36:22

标签: java jvm birt

我正在开发一个以PDF格式生成BIRT报告的项目。该应用程序不是一个Web应用程序。我试图在此链接http://wiki.eclipse.org/Simple_Execute_(BIRT)_2.1上关注Report Engine API示例,但在运行(运行为 - > Java Application)代码时出现错误。我的代码如下。

我的代码如下:

package birt.classicmodels.offices;
import java.util.logging.Level;
import org.eclipse.birt.core.framework.Platform;
import org.eclipse.birt.report.engine.api.EngineConfig;
import org.eclipse.birt.report.engine.api.EngineException;
import org.eclipse.birt.report.engine.api.IReportEngine;
import org.eclipse.birt.report.engine.api.IReportEngineFactory;
import org.eclipse.birt.report.engine.api.IReportRunnable;
import org.eclipse.birt.report.engine.api.IRunAndRenderTask;
import org.eclipse.birt.report.engine.api.PDFRenderOption;

public class ExecuteReport {
    public static void main(String[] args) {
        ExecuteReport er = new ExecuteReport();
        try {
            er.executeReport();
        } catch(Exception ex) {
            System.out.println(ex.toString());
        }
    }

    public void executeReport() throws EngineException {
       IReportEngine engine = null;
       EngineConfig config = null;
       IReportEngineFactory factory = null;
       Object factoryObj = null;
       try {
            config = new EngineConfig();
            config.setBIRTHome("C:\\birt-runtime-4.6.0-20160607\\ReportEngine");
            config.setLogConfig("C:\\temp\\test", Level.FINEST);
            Platform.startup(config);
            factoryObj = Platform.createFactoryObject(IReportEngineFactory.EXTENSION_REPORT_ENGINE_FACTORY);
            factory = (IReportEngineFactory) factoryObj;
            engine = factory.createReportEngine(config);      

            // Open the report design
            IReportRunnable design = null;
            String designPath = "C:\\birt-runtime-4.6.0-20160607\\ReportEngine\\samples\\hello_world.rptdesign";
            design = engine.openReportDesign(designPath);
            IRunAndRenderTask task = engine.createRunAndRenderTask(design);      

            PDFRenderOption PDF_OPTIONS = new PDFRenderOption();
            PDF_OPTIONS.setOutputFileName("C:\\temp\\test.pdf");
            PDF_OPTIONS.setOutputFormat("pdf");

            task.setRenderOption(PDF_OPTIONS);
            task.run();
            task.close();
            engine.destroy();
        } catch(final Exception ex) {
            ex.printStackTrace();
        } finally {
            Platform.shutdown();
        }
    }

}

SETUP:

  1. 我使用完整的BIRT设计师下载安装了BIRT设计师。
  2. 我将BIRT运行时文件夹的libs文件夹下的所有.jars添加到我的构建路径。
  3. 主要方法不是我添加它的示例的一部分,目的是将报告保存到我的文件系统。
  4. 我参考的设计模板是BIRT引擎附带的设计示例。
  5. 的问题:

    当我运行代码(运行为 - > Java应用程序)时,我收到以下错误:

    1. 弹出对话框,其中包含以下消息:
    2. Java Virtual Machine Launcher
      Error: A JNI error has occured, please check your installation and try again
      
      1. 在消息对话框中单击“确定”后,控制台将填充以下错误:

        Exception in thread "main" java.lang.NoClassDefFoundError:
        org/eclipse/birt/core/framework/PlatformConfig
        at java.lang.Class.getDeclaredMethods0(Native Method)
        at java.lang.Class.privateGetDeclaredMethods(Unknown Source)
        at java.lang.Class.privateGetMethodRecursive(Unknown Source)
        at java.lang.Class.getMethod0(Unknown Source)
        at java.lang.Class.getMethod(Unknown Source)
        at sun.launcher.LauncherHelper.validateMainClass(Unknown Source)
        at sun.launcher.LauncherHelper.checkAndLoadMain(Unknown Source)
        Caused by: java.lang.ClassNotFoundException:
        org.eclipse.birt.core.framework.PlatformConfig
        at java.net.URLClassLoader.findClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
        at java.lang.ClassLoader.loadClass(Unknown Source)
        

1 个答案:

答案 0 :(得分:0)

我认为您缺少以下依赖

<dependency>
    <groupId>org.eclipse.birt.runtime</groupId>
    <artifactId>org.eclipse.birt.runtime</artifactId>
    <version>4.6.0-20160607</version>
</dependency>