来自类加载器的输入流损坏

时间:2012-08-30 07:14:14

标签: java java-ee jboss resources birt

我有以下问题,我想知道原因在哪里。我正在尝试从conf服务器的JBoss文件夹加载资源。

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

我也试过了/文件开头的版本。

当我尝试从我的项目资源加载相同的文件时(因此从带有this.getClass().getResourceAsStream的jar文件中加载),它就可以了。此外,我正在以相同的方式从同一JBoss文件夹中读取属性文件,它也可以。我真的很喜欢这个,有什么可能导致这样的奇怪错误?

1 个答案:

答案 0 :(得分:1)

  1. 添加null检查以确保您可以实际找到资源(即Validate.notNull(templateIS, "%s not found in classpath", REPORT_DESIGN)或类似资源)。这将确保您可以实际找到该报告。

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