2009-06-07 15 views
0

Tout en travaillant sur mon problème précédent,Java statique vs objets réguliers

Java Jar Class Not Found Exception

j'ai remarqué quelque chose de bizarre. la classe qui ne peut pas être trouvée est référencée par main. Maintenant si j'essaye de créer une instance de la classe comme

SysTray tray = new SysTray();

je reçois une exception de classe introuvable lorsque je tente d'exécuter l'application, mais si je crée comme

plateau SysTray statique = new systray();

il est chargé aucun problème n'est signalé. Je me demandais si quelqu'un sait pourquoi est-ce?

Cela ne devrait rien avoir à faire avec le chemin de classe car il n'y a pas de dépendances externes et l'application est contenue dans un pot.

+0

La seule différence entre statique et la première méthode est la façon dont ils sont stockés dans la classe appelante et quand le Le constructeur de SysTray est appelé, comme le dit Michael Borgwardt. – Javache

Répondre

3

Pouvez-vous nous montrer le code actuel ou, si c'est trop grand, essayez de reproduire l'erreur dans un petit exemple? La seule chose qui pourrait expliquer cela serait que la référence statique soit en dehors de la classe principale et donc pas réellement chargée jusqu'à ce que la classe dans laquelle elle est définie soit accédée pour la première fois.

0

Avez-vous réellement accès au champ statique? Je ne me souviens pas mais je pense que le jvm est libre d'exécuter l'initialisation statique paresseux (sur la référence de première classe ou quelque chose.)