3

我有两个 Java 项目:一个是库,另一个是控制台应用程序。在库项目中,我有一个带有一些静态成员变量(用于全局访问)的抽象类。它看起来有点像这样:

public abstract class AbstractHelper
{
    public static final VarType someVar = new VarType();
}

我从两个不同的类中的控制台应用程序访问静态成员变量。

出于某种原因,“someVar”在访问它的两个不同类中具有唯一的实例。如果我从 A 类的实例访问“someVar”,我得到的对象与从 B 类的实例访问“someVar”时不同。

但是,如果我将 AbstractHelper 从库项目移动到我的控制台应用程序项目中,那么它具有预期的行为(静态成员变量的单个实例在多个类之间共享)

有谁知道为什么会这样?

4

1 回答 1

0

这可以通过使用不同的类加载器来实现。OSGI、java-ee 服务器和其他几种技术允许将不同的类加载器轻松注入 JVM。

您可以解决这个问题:在同一个类路径上定义您的库和控制台应用程序类。

于 2014-01-05T22:55:48.970 回答