2010-05-29 63 views
2

我们将BIRT运行时与我们的应用程序(EAR文件)捆绑在一起,并且直到最近我们使用的版本2.2都可以正常运行。但是,当我们升级到BIRT 2.5.1时,我们遇到了类加载问题。BIRT的类加载问题

BIRT运行时打包了一个xerces.jar文件,该文件是类加载冲突的根本原因,因为java ext类路径中存在另一个xerces.jar文件。简单的解决方案应该是去除与BIRT运行时打包在一起的xerces.jar文件,并让BIRT从父类加载器层次中拾取xerces类。但是,如果我从BIRT运行时插件目录中删除xerces.jar文件,报告会失败,但这似乎不会发生。

为了给你多一点信息我的应用程序结构

EAR
- 应用类
- WAR
---- WEB-INF
------平台(BIRT)
--------插件(BIRT)

有没有办法强制BIRT从父类加载器的xerces.jar文件中加载所需的类?

在此先感谢。

回答

1

尝试将osgi.parentClassloader=fwk置于文件configuration/config.ini中。

您还可以添加osgi.debug=/path/to/debug.options来为OSGi/Equinox设置调试选项。有关可能的选项,请参阅org.eclipse.osgi*.jar中的文件.options。开始于:

org.eclipse.osgi/debug=true 
org.eclipse.osgi/resolver/debug=true 

你应该在stdout上得到一大堆的调试输出。