J'ai récemment mis à niveau à Helios et maintenant chaque fois que j'entre dans un constructeur pour une classe (par exemple Pour aller au code du constructeur actuel, je dois sortir plusieurs fois, ce qui est ennuyeux. Cela se passe avec chaque classe et malgré la pile, je ne vois jamais aucun message d'erreur dans la console. Comment puis-je résoudre ce problème pour que cela soit directement dans le constructeur de ma classe? P>
Cela n'arrive que la première fois que la classe est utilisée et même pour les classes dans le même fichier SRC que l'actuel. P> Cat MyCat = nouveau chat (); code>), Eclipse Debugger montre la pile comme p>
: P>
4 Réponses :
de la piste de pile rapportée dans Eclipse, il semble qu'un Avez-vous défini des points d'arrêt dans le constructeur de la classe? Vous n'avez pas pu entrer dans le constructeur du tout? P>
Utilisez-vous classnotfoundException code> a été initialisé et est lancé, l'application que vous avez écrite a-t-elle été écrite dans des problèmes? P>
class.forname () code> ou importation pour introduire la classe à JRE? p>
Aucun problème du tout, et j'ai pu entrer dans le constructeur.
Rien de spécial pour importer la classe.
Je pense que la classification de la classe ne se produit que dans une partie du chargement de classe - le problème est que vous avez un point d'arrêt défini pour déclencher lorsque ces exceptions sont lancées. Je suppose que votre version d'Eclipse a ce point d'arrêt par défaut, alors que l'ancien n'a pas. P>
Vérifiez Ce lien , qui indique un problème similaire et fournit la solution , qui est juste pour désactiver ce point d'arrêt. p>
(dans l'intérêt de l'enseignement à pêcher et de tout cela, le terme de recherche Google était "Eclipse Debugger Launcher $ AppClassloader".) P>
C'est bien le problème et se produit sur la première invocation d'une méthode sur une classe qui n'a pas encore été chargée. Il suffit de frapper F7 (retour) autant de fois que nécessaire pour revenir à votre classe - je trouve que cela prend généralement 8 presses de F7 pour revenir à ma classe.
BTW, je me demande si vous pouvez également contourner cela en chargeant la classe avant de vous entrer dans le constructeur. Par exemple, et si vous avez été évalué dans votre débogueur class.forname (cat.class.getname ()) code>?
Tout ce qui obtient la classe chargée contournera ce problème.
Dans la fenêtre des points d'arrêt, j'ai effacé tous les points d'arrêt, mais cela arrive toujours! (BTW I Googled "Launcher $ AppClassloader Java", n'a pas eu de succès.)
Si vous entrez dans un constructeur avec F5, aucun point d'arrêt n'a besoin d'être impliqué. "Entrez" entrera dans la prochaine instruction. Si vous invoquez le constructeur et que la classe n'est pas encore chargée, la prochaine chose à faire est une classification de classe (de sorte que la classe peut être chargée), c'est ce que vous allez entrer.
Ok, la dernière fois que j'ai fait une programmation sérieuse Java était au lycée. Cela a-t-il toujours été le cas?
@cplusplus essayez de charger la classe avant d'accéder au constructeur. Je n'utilise pas Eclipse, moi-même, donc je ne peux pas plus détaillé que mon tour d'évaluation ci-dessus. Quant aux résultats de la recherche, il a ajouté les mots-clés "Eclipse Debugger" qui l'a fait pour moi.
Eclipse filtrerait généralement le code code> code> lors du débogage, pour une raison quelconque, cela ne fonctionnait pas après la mise à niveau. Voir ma réponse pour une solution.
Eclipse a une préférence du filtre à étapes dans les préférences de débogueur Java. Son préférence par défaut filtre java.lang.classloader code>, mais cela ne fonctionnait pas. Cela pourrait avoir quelque chose à voir avec récemment ayant installé et éteint à l'aide de JRE7. Pour résoudre mon problème, j'ai ajouté un filtre pour participer à n'importe quel code dans le package
java.lang code>. P>
p>
Il semble que le pour mes étudiants utilisant des machines de laboratoire exécutant OpenJDK, la solution consistait à ajouter un filtre d'étape dans les mêmes préférences mentionnées dans https://stackoverflow.com/a/10525351/1449799 mais Ajouter JDK. * code> p>
Est-ce que la classe existe? On dirait qu'une classe de classeNotFoundException est lancée ...
La classe existe définitivement, le débogueur traverse finalement au constructeur et le programme est exécuté avec succès.