我正在为框架编写一个插件,它将我的代码作为子类加载器加载
问题是该框架使用某个 Xerces 版本,与我的代码不兼容,我想使用我的“自己的”jar for xerces,但似乎由于旧版本已经加载,我不能似乎让我的代码使用我的。
我正在寻找一些类加载器分离,我知道这是一个已知问题,但似乎无法解决它
在这种情况下,是否有任何框架、库或代码示例可以在本地使用较新的 jar?
最佳答案
您是否尝试过将框架和 Xerces 库的类作为 ExtClassLoader 的一部分加载,方法是将它们放置在与 java.ext.dirs 系统属性相对应的路径中?这样框架的 Xerces 实现版本将由 ExtClassLoader 加载。
然后,您可以将您的 Xerces 实现版本放置在与要由 AppClassLoader 加载的 java.class.path 系统属性相对应的路径中。
我自己没有尝试过,但考虑到类加载层次结构,这应该可行。您可以在此处了解有关类加载层次结构的更多信息 - http://onjava.com/pub/a/onjava/2005/01/26/classloading.html
关于java - 加载我自己的 Xalan 实现,其中旧的 Xalan 被加载到父类加载器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5440395/