【问题标题】:Corrupted input stream from class loader [closed]来自类加载器的损坏的输入流[关闭]
【发布时间】:2012-08-30 07:14:14
【问题描述】:

我有以下问题,我想知道可能是什么原因造成的。我正在尝试从JBoss 服务器的conf文件夹中加载资源。

final String REPORT_DESIGN = "report_name.rptdesign"; //xml file
templateIS = Thread.currentThread().getContextClassLoader().getResourceAsStream(REPORT_DESIGN);

这很好用,我什至可以将流写入文本文件并得到正确的结果。但问题是当我试图将输入流传递给 Birt 引擎时,我总是得到 org.eclipse.birt.report.engine.api.EngineException: The design file <stream> has error and can not be run

我也尝试过带有/beginning 文件的版本。

当我尝试从我的项目的资源中加载相同的文件时(所以从带有this.getClass().getResourceAsStream 的 jar 文件中),它起作用了。我也以同样的方式从同一个JBoss 文件夹中读取属性文件,它也可以工作。我真的被这个卡住了,什么可能导致这种奇怪的错误?

【问题讨论】:

    标签: java jakarta-ee jboss resources birt


    【解决方案1】:
    1. 添加null 检查以确保您确实可以找到资源(即Validate.notNull(templateIS, "%s not found in classpath", REPORT_DESIGN) 或类似的)。这将确保您可以真正找到报告。

    2. 检查您的 BIRT 报告中是否有变音符号(代码点 > 128 的字符)。如果有,请确保报告的编码正确,并且文件实际上是该编码。

    【讨论】:

    • 感谢您的回答,我意识到问题出在哪里,我那里有一个格式错误的 XML 文件,所以这是我的错。
    猜你喜欢
    • 2014-04-05
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 2015-05-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-29
    • 2022-09-23
    相关资源
    最近更新 更多