我正试图通过使用不同的ClassLoader来解决这个问题但没有成功,我有点绝望。我要做的是启动使用多个静态属性创建的第三方程序的2个不同实例,因此不能在我的代码中实例化两次。我被建议使用不同的ClassLoader加载.jar文件,虽然我真的不知道如何做到这一点。我可以得到一些关于我可以从哪里开始的指示吗?
我还需要将自己程序的对象传递给这个程序实例,我也不知道如何做到这一点......
提前感谢您的帮助, 安德烈
PS:整个讨论始于java forums,因此我需要做更详细的描述以及为什么需要这样做。我在这篇文章中提到的建议来自malcommmc:
另一种方法可能是运行 整个系统在一个JVM中,但创建一个 每个实例的新类加载器 第三方代码,并确保 包含违规的类 静态只能通过这些新的加载 班级装载机。在这些条件下 JVM可以支持多个副本 同一类,提供FQN 在类加载器中是唯一的。
在这种情况下,将每个实例作为a运行 单独的线程,并设置线程 上下文类加载器指向 相关的班级装载机。
大概是你的对象 建议通过指定 一些已知的接口或抽象类 到第三方应用程序。你需要那个 系统已知的接口 类加载器,即在类路径上, 但是第3级的主要类别 派对应用程序不得上 classpath,但可以作为jar访问 由URLClassLoader引用。
答案 0 :(得分:-1)
这已经在Java论坛中解决了 - 问题中提供的链接