【问题标题】:There is no report design object available. :birt report design没有可用的报表设计对象。 :birt 报告设计
【发布时间】:2015-02-22 05:11:08
【问题描述】:

您好,我有一份报告在我的本地机器上运行良好。我正在使用 eclipse birt 和 birt 查看器应用程序。当我在云机器(我们带来了互联网)上部署时,报告 pdf 没有显示,而是显示以下错误。可能是什么问题?

我的本​​地操作系统是 windows7。云服务器是linux。我们正在使用 birt4.3。工作环境是tomcat7,mysql数据库。我们正在使用 pojodata 源进行报告生成。请帮我解决这个问题。谢谢你。

org.eclipse.birt.report.exception.ViewerException:没有可用的报表设计对象。 在 org.eclipse.birt.report.context.ViewerAttributeBean.__init(ViewerAttributeBean.java:226) 在 org.eclipse.birt.report.context.BaseAttributeBean.init(BaseAttributeBean.java:230) 在 org.eclipse.birt.report.context.ViewerAttributeBean.(ViewerAttributeBean.java:118) 在 org.eclipse.birt.report.context.BirtContext.__init(BirtContext.java:44) 在 org.eclipse.birt.report.context.BaseContext.(BaseContext.java:69) 在 org.eclipse.birt.report.context.BirtContext.(BirtContext.java:30) 在 org.eclipse.birt.report.servlet.ViewerServlet.__getContext(ViewerServlet.java:150) 在 org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.doPost(BirtSoapMessageDispatcherServlet.java:243) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:647) 在 org.apache.axis.transport.http.AxisServletBase.service(AxisServletBase.java:327) 在 javax.servlet.http.HttpServlet.service(HttpServlet.java:728) 在 org.eclipse.birt.report.servlet.BirtSoapMessageDispatcherServlet.service(BirtSoapMessageDispatcherServlet.java:122) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:749) 在 org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:487) 在 org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:412) 在 org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:339) 在 com.zedlabs.birt.BIRTFilterForFrameworks.doFilter(BIRTFilterForFrameworks.java:34) 在 org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243) 在 org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210) 在 org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:222) 在 org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123) 在 org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472) 在 org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:171) 在 org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:99) 在 org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:936) 在 org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118) 在 org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407) 在 org.apache.coyote.ajp.AjpProcessor.process(AjpProcessor.java:200) 在 org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:589) 在 org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310) 在 java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) 在 java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) 在 java.lang.Thread.run(Thread.java:744)

【问题讨论】:

    标签: birt


    【解决方案1】:

    BIRT 运行时无法找到您的 rptdesign 文件(报告)。您需要确保已配置 BIRT 主页。您不需要在基于 Eclipse 的应用程序中设置 BIRT 主目录,这就是它在 IDE 中为您工作的原因。这个link to Actuate 提供了设置报告引擎的帮助。

    Actuate 对 BIRT home 及其使用方式的描述:

    BIRT 主页是 BIRT 插件和库的位置,是报表引擎所需的关键属性。如果没有定义的 BIRT 主页,报表引擎无法解析报表设计或呈现报表。对于独立应用程序,BIRT 主目录是文件系统位置的绝对路径。对于从应用服务器上的 Web 归档 (.war) 文件运行的应用程序,BIRT 主目录是 WAR 文件中的相对路径。

    对于独立应用程序,请使用以下技术之一:

    1 - 调用 EngineConfig.setBIRTHome( ),参数是 BIRT 主目录的路径,例如:

    config.setBIRTHome( "C:/birt-runtime-<version>/ReportEngine" );
    

    2 - 在应用程序的环境中,设置 BIRT_HOME 和 CLASSPATH 变量以访问所需的库。例如,在 Windows 批处理文件中,在启动独立应用程序之前包含类似于以下命令的命令:

    set BIRT_HOME="C:\birt-runtime-<version>\ReportEngine"
    SET CLASSPATH=%BIRT_HOME%\<required library 1>;%BIRT_HOME%\<required library 2 and so on>;%CLASSPATH%
    

    要开发使用 BIRT_HOME 环境变量的应用程序,请在 Eclipse 运行对话框的 VM 参数中设置 BIRT_HOME。例如,在 VM 参数中,键入类似于以下行的文本:

    -DBIRT_HOME="C:\birt-runtime-<version>\ReportEngine"
    

    对于已部署的 Web 应用程序,请使用以下技术之一:

    1 - 如果应用程序在文件系统中有位置,则使用 servlet 上下文查找 BIRT home 的真实路径,例如:

    config.setBIRTHome( servletContext.getRealPath( "/WEB-INF" ) );
    

    2 - 如果应用程序从 WAR 文件运行,请使用 WAR 文件根目录的相对路径,如下例所示。此配置使用 PlatformServletContext。

    config.setBIRTHome( "" );
    

    另外,

    BIRT 主页是 BIRT 运行时期望找到报告文件的默认位置。如果您选择另一个位置来存储您的报告,您还必须更新报告查看器上下文参数。另外,由 Actuate here 描述:

    要确定报告设计、报告中的图像和日志文件的位置,BIRT 报告查看器使用 web.xml 文件中定义的上下文参数。作为任何这些参数的值提供的路径可以是相对的或绝对的。相对路径是相对于 BIRT 报告查看器应用程序的根文件夹的。部署为 WAR 文件的 BIRT 报告查看器的可写位置的路径必须是绝对路径。

    默认情况下,报表设计的相对路径是相对于 BIRT 报表查看器的根文件夹。将所有报表设计放在此文件夹中,或使用 URL 中报表设计的完整路径。使用相对路径不方便在 WAR 文件中部署 BIRT 报告查看器,因为更改报告设计需要重新打包 WAR 文件。要为报表设计设置不同的位置,请更改 BIRT 报表查看器应用程序的 web.xml 文件中的 BIRT_VIEWER_WORKING_FOLDER 参数

    设置报表设计的位置:

    1. 导航到 $TOMCAT_INSTALL/webapps。
    2. 根据您的部署配置执行以下步骤之一,在代码编辑器中打开 web.xml:
      • 如果您使用 WAR 文件部署 BIRT 报告查看器,请将 WEB-INF/web.xml 从 birt.war 提取到一个临时位置。
      • 如果您使用文件夹来部署 BIRT 报告查看器,请导航到 /WEB-INF。
    3. 找到以下元素:
    <context-param>
    <param-name>BIRT_VIEWER_WORKING_FOLDER</param-name> 
    <param-value></param-value> 
    </context-param>
    
    1. 更改 param-value 元素,使其包含报表设计文件夹的绝对路径,类似于以下代码,其中 Report_Folder 是报表设计文件夹的绝对路径:
    <context-param>
    <param-name>BIRT_VIEWER_WORKING_FOLDER</param-name> 
    <param-value>Report_Folder</param-value> 
    </context-param>
    
    1. 保存 web.xml 并关闭编辑器。
    2. 如果您使用 WAR 文件部署 BIRT 报告查看器,请将 birt.war 中的 WEB-INF/web.xml 替换为刚刚修改的文件。
    3. 将报表设计复制到 BIRT_VIEWER_WORKING_FOLDER 的 param-value 元素中指定的文件夹中。
    4. 重新启动 Apache Tomcat。

    对于这么长的潜在解决方案列表,我们深表歉意。 Actuate 提供了许多有用的详细信息,说明您设置环境的不同方式的数量。希望这会有所帮助...

    【讨论】:

      【解决方案2】:

      在 web.xml 中将以下上下文参数的值设置为 false:

      <context-param>
          <param-name>WORKING_FOLDER_ACCESS_ONLY</param-name>
          <param-value>false</param-value> 
      </context-param>
      

      【讨论】:

        【解决方案3】:

        以下内容对我有用:

        使用新版本的 Birt 设计器进行编辑,然后使用文本编辑器打开此文件并将此标签更改为您的版本。

        <report xmlns="http://www.eclipse.org/birt/2005/design" version="3.2.17" id="1">
            <property name="createdBy">Eclipse BIRT Designer Version 4.3.2.v20140211-1400 Build &lt;4.3.2.v20140218-1056></property>
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多