Java статические и обычные объекты - PullRequest
0 голосов
/ 07 июня 2009

Работая над моей предыдущей задачей,

Исключение класса Java Jar

Я заметил что-то странное. класс, который не может быть найден, ссылается на main. Теперь, если я попытаюсь создать экземпляр класса вроде

SysTray tray = new SysTray ();

я получаю исключение для класса не найден, когда я пытаюсь запустить приложение, но если я создаю его как

статический лоток SysTray = новый SysTray ();

загружается, о проблемах не сообщается.

Мне было интересно, кто-нибудь знает, почему это так?

Это не должно иметь ничего общего с путем к классу, потому что нет внешних зависимостей и приложение содержится в банке.

Ответы [ 2 ]

3 голосов
/ 07 июня 2009

Можете ли вы показать нам реальный код или, если он слишком большой, попытаться воспроизвести ошибку в меньшем примере?

Единственное, что могло бы объяснить это, это статическая ссылка, находящаяся вне основного класса и, следовательно, фактически не загруженная до тех пор, пока класс, в котором она определена, не будет впервые доступен.

0 голосов
/ 07 июня 2009

У вас есть доступ к статическому полю? Я не помню, но я думаю, что jvm свободен для запуска статической инициализации ленивый (при первом обращении к классу или что-то.

...