我们将BIRT运行时与我们的应用程序(EAR文件)捆绑在一起,一直到最近我们使用的2.2版都很好。但是当我们升级到BIRT 2.5.1时,我们遇到了类加载问题。
BIRT运行时打包xerces.jar文件,这是类加载冲突的根本原因,因为java ext类路径上还有另一个xerces.jar文件。简单的解决方案是删除与BIRT运行时打包的xerces.jar文件,并让BIRT从父类加载器层次结构中拾取xerces类。但是,如果我从BIRT运行时插件目录中删除xerces.jar文件,则报告失败似乎不会发生。
为您提供有关我的应用结构的更多信息
EAR
- 应用程序类
- WAR
---- WEB-INF
------平台(BIRT)
--------插件(BIRT)
有没有办法强制BIRT从父类加载器的xerces.jar文件加载所需的类?
提前致谢。
答案 0 :(得分:1)
尝试将osgi.parentClassloader=fwk
放入文件configuration/config.ini
。
您还可以添加osgi.debug=/path/to/debug.options
来设置OSGi / Equinox的调试选项。有关可能的选项,请参阅.options
中的文件org.eclipse.osgi*.jar
。从:
org.eclipse.osgi/debug=true
org.eclipse.osgi/resolver/debug=true
你应该在stdout上获得一大堆调试输出。