2009-06-07 61 views
0

虽然我以前的工作问题,Java静态VS常规对象

Java Jar Class Not Found Exception

我发现了一些奇怪的。无法找到的类是从main引用的。现在,如果我尝试像

系统托盘托盘=新的系统托盘创建类的实例();

我得到一个类未发现异常,当我尝试运行应用程序,但如果我创建它像

静态系统托盘托盘=新的系统托盘();

它被加载没有问题报告。

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

这应该没有关系的类路径,因为没有外部depencies和应用程序包含在一个罐子里。

+0

静态和第一种方法之间的唯一区别是它们存储在调用类的方式,当正如Michael Borgwardt所说,SysTray的构造函数被调用。 – Javache 2009-06-07 09:12:48

回答

3

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

可以解释这样做的唯一的事情是静态参考是主要的类之外,因此不实际加载,直到它在首次访问定义的类。

0

你真的访问静态字段吗?我不记得了,但我认为JVM是自由地运行静态初始化懒(头等舱引用或东西。