加载我自己的 Xalan 实现,其中旧的 Xalan 被加载到父类加载器
我正在为一个框架编写一个插件,该框架将我的代码作为子类加载器加载。
问题是该框架使用某个 Xerces 版本,与我的代码不兼容,我想使用我的“自己的”jar 用于 xerces,但是看来由于旧的已经加载,我似乎无法让我的代码使用我的。
我正在寻找一些类加载器分离,我知道这是一个已知问题,但似乎无法解决它
在这种情况下是否有任何框架、库或代码示例可以在本地使用较新的 jar?
I'm writing a plugin for a framework that loads my code as a child classloader
The problem is that that framework uses a certain Xerces version, that is not compatible with my code, I want to use my "own" jar for xerces, but it seems since the old one was already loaded, I can't seem to make my code use mine.
I'm looking for some classloader seperation, I know it's a know problem, but can't seem to solve it
Is there any framework, library, or code sample to user locally a newer jar in such a scenario?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
您是否尝试过将框架和 Xerces 库的类作为 ExtClassLoader 的一部分加载,方法是将它们放置在与 java.ext.dirs 系统属性相对应的路径中?这样,框架的 Xerces 实现版本将由 ExtClassLoader 加载。
然后,您可以将您的 Xerces 实现版本放置在与要由 AppClassLoader 加载的 java.class.path 系统属性相对应的路径中。
我自己没有尝试过,但考虑到类加载层次结构,这应该可行。您可以在此处了解有关类加载层次结构的更多信息 - http:// onjava.com/pub/a/onjava/2005/01/26/classloading.html
Have you tried loading the classes of your framework and Xerces libs as a part of the ExtClassLoader by placing them in path corresponding to the java.ext.dirs system property? This way the framework's version of Xerces implementation will be loaded by the ExtClassLoader.
You can then place your version of Xerces implementation in the path corresponding to the java.class.path system property to be loaded by the AppClassLoader.
I have not tried this myself, but considering the class loading hierarchy this should work. You can learn more about the class loading hierarchy here - http://onjava.com/pub/a/onjava/2005/01/26/classloading.html
尝试做:
try doing: