我的问题是我正在开发一个项目,该项目要求我运行多个具有许多静态属性/变量的代码的实例,这会导致所有实例共享这些资源,并且崩溃.如果我创建一个.jar文件并通过在windows中运行.jar多次打开它,我可以运行这个其他人的程序的多个实例,但是在我的代码中多次运行调用"main"方法(这是什么我需要这样做不会起作用.
我想创建一个.jar并使用Runtime.getRuntime().exec( "myprog.jar" );多次调用程序,但这对我不起作用,因为我必须将我的对象的实例传递给这个新程序,我不认为这个解决方案会允许.
PS:这也发布在Sun论坛上,所以我会发布我在这里的答案或者我在这里得到的答案,一旦我解决了这个问题就自然给予了应有的信誉= P.
请记住,Java中的静态元素仅在类加载器(层次结构)的上下文中是唯一的; 一个类由Juple {classloader,classname}在JVM中唯一标识.
您需要实例化隔离的类加载器并使用该类加载器加载jar.每个加载的类(以及因此statis元素)在其类加载器中是唯一的,并且不会相互干扰.