我的问题是,我正在开发一个项目,该项目要求我运行其他人代码的多个实例,该代码具有许多静态属性/变量,这会导致所有实例共享这些资源,然后崩溃。如果我创建一个 .jar 文件并通过在 Windows 中运行 .jar 多次打开它,但在我的代码中多次调用“main”方法(这就是我需要做)不会工作。
我考虑过创建一个 .jar 并使用 Runtime.getRuntime().exec( "myprog.jar");
多次调用该程序,但这对我来说不起作用,因为我必须将对象的实例传递给这个新程序,但我认为这个解决方案不允许这样做。
PS:This is also posted in the Sun forums ,所以我会发布我在这里得到的答案,或者我在这里得到的答案,一旦我解决了这个问题,自然会给予适当的认可=P。
最佳答案
请记住,Java 中的静态元素仅在类加载器(层次结构)的上下文中是唯一的;类在 JVM 中由元组 {classloader, classname} 唯一标识。
您需要实例化隔离的类加载器并使用该类加载器加载 jar。每个加载的类(以及 statis 元素)在其类加载器中都是唯一的,并且不会相互干扰。
关于java - 静态属性的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1993739/