java - 静态属性的问题

标签 java

我的问题是,我正在开发一个项目,该项目要求我运行其他人代码的多个实例,该代码具有许多静态属性/变量,这会导致所有实例共享这些资源,然后崩溃。如果我创建一个 .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/

相关文章:

java - 永久空间与堆空间

java - 用 Java 复制 PowerPoint 幻灯片(最好)

java - 如何在 java 中实例化 Queue 对象?

java - 为什么要使用 Hibernate 映射组件?

java - MVP:View 应该实现 Presenter 的接口(interface)还是相反?

java - Spring Boot自定义错误页面在部署在外部容器中时不起作用

Java JSpinner时间到MySQL数据库

java - 为单独的类文件编写方法

java - HOCON替换默认值

java - Solr Tokenizer 添加词形还原器的问题