Java静态与常规对象

时间:2009-06-07 06:20:31

标签: java static jar new-operator

在处理我之前的问题时,

Java Jar Class Not Found Exception

我注意到一些奇怪的事情。从main引用了无法找到的类。现在,如果我尝试创建类的实例,如

SysTray tray = new SysTray();

当我尝试运行应用程序但是如果我像

那样创建它时,我得到了一个未找到类的异常

static SysTray tray = new SysTray();

它被加载没有报告任何问题。

我想知道是否有人知道这是为什么?

这应该与类路径无关,因为没有外部依赖项,并且应用程序包含在jar中。

2 个答案:

答案 0 :(得分:3)

你能告诉我们实际的代码,或者如果它太大,试着在一个较小的例子中重现错误吗?

唯一可以解释这一点的是静态引用在主类之外,因此在第一次访问它定义的类之前不会实际加载。

答案 1 :(得分:0)

您实际访问静态字段吗?我不记得了,但我认为jvm可以自由运行静态初始化懒惰(在第一类引用或其他东西。