J'obtiens cette étrange erreur dans Eclipse en essayant de définir un point d'arrêt.
Unable to insert breakpoint Absent Line Number Information
J'ai coché la case des options du compilateur mais pas de chance.
eclipse
debugging
breakpoints
chandrajeet
la source
la source
Réponses:
J'avais le même message d'erreur dans Eclipse 3.4.1, SUN JVM1.6.0_07 connecté à Tomcat 6.0 (fonctionnant en mode débogage sur une autre machine, Sun JVM1.6.0_16, la connexion de débogage fonctionnait correctement).
Fenêtre -> Préférences -> Java -> Compilateur -> Génération de fichier de classe: "ajouter des attributs de numéro de ligne au fichier de classe généré" a été coché. J'ai fait un nettoyage, une recompilation. Je l'ai décoché, recompilé, vérifié, recompilé. Je me suis assuré que le projet utilisait les paramètres globaux. Toujours le même message.
Je suis passé à la construction de fourmis, en utilisant
Toujours le même message.
Je n'ai pas découvert la cause de ce message et pourquoi il ne disparaîtrait pas. Bien que cela semble avoir quelque chose à voir avec la session de débogage Tomcat en cours d'exécution: une fois déconnectée, la recompilation résout le problème. Mais lors de la connexion du débogueur à Tomcat ou lors de la définition de nouveaux points d'arrêt au cours d'une session de débogage connecté, il est réapparu.
Cependant, il s'est avéré que le message était faux : j'ai en effet pu déboguer et définir des points d'arrêt, à la fois avant et pendant le débogage ( javap -l a également montré les numéros de ligne). Alors ignorez-le :)
la source
debug="true"
à lajavac
tâche duant
script de construction a fonctionné.la source
Cela a résolu mon problème:
la source
Installed JREs
défaut c'estJDK
au lieu deJRE
Pour les problèmes liés à Spring , considérez que dans certains cas, il génère des classes "sans numéro de ligne"; par exemple une
@Service
classe annotée sans interface, ajoutez l'interface et vous pouvez déboguer. voir ici pour un exemple complet.Le service ci-dessus aura une interface générée par spring provoquant des "numéros de ligne manquants". L'ajout d'une véritable interface résout le problème de génération:
la source
J'ai la réponse à ce problème du côté du SDK BlackBerry: pour une raison quelconque, peu importe combien de fois j'ai changé les options dans le compilateur, le fichier de paramètres sous-jacent n'a pas changé.
Jetez un œil dans le dossier .settings de votre projet pour un fichier appelé org.eclipse.jdt.core.prefs .
Là, vous pouvez modifier les paramètres manuellement:
edit: Suite à cela, j'ai remarqué que parfois je peux ignorer l'alerte qu'Eclipse donne, et elle s'arrêtera toujours à l'endroit requis ... lorsque vous travaillez en tant que dev.
la source
Cela a fonctionné pour moi:
Window --> Preferences --> Java --> Compiler --> Classfile Generation
, toutes les options doivent êtreTrue
.debug="true"
dans la<javac>
tâche build.xml .Debug
modela source
Je ne sais pas si cela est toujours d'actualité, peut-être qu'un autre marin trouvera cela utile.
Le message apparaît lorsqu'un fichier de classe a été compilé, les indicateurs de débogage sont désactivés.
Dans eclipse, vous pouvez l'activer par les options mentionnées ci-dessus,
Fenêtre -> Préférences -> Java -> Compilateur -> Génération de fichier de classe: "ajouter des attributs de numéro de ligne au fichier de classe généré"
Mais si vous avez un fichier jar, vous obtiendrez la sortie compilée. Il n'existe aucun moyen simple de résoudre ce problème.
Si vous avez accès à la source et utilisez ant pour obtenir le fichier jar, vous pouvez modifier la tâche ant comme suit.
Débogage heureux ..
réf: http://doc.sumy.ua/prog/Java/javanut/ch16_04.htm
la source
J'ai essayé presque toutes les solutions ici et pas de chance. Avez-vous essayé de cliquer sur "Ne me redites plus"? Après cela, j'ai redémarré mon programme et tout allait bien. Eclipse a atteint mon point d'arrêt comme si de rien n'était.
La cause principale pour moi était qu'Eclipse essayait de configurer le débogage pour les objets proxy Spring CGLIB générés automatiquement. Sauf si vous devez déboguer quelque chose à ce niveau, vous devez ignorer le problème.
la source
Il serait utile que vous indiquiez la version d'éclipse que vous utilisez et la technologie (Java JDT, ou AJDT pour Aspect Java, ou C ++ CDT par exemple), juste pour être sûr.
Du côté de Java, je suppose que votre "Cochez la case des options du compilateur" se réfère à cela
Sous "
Window --> Preferences --> Java --> Compiler --> Classfile Generation
", toutes lesClass file
options de génération ' ' sont définies sur True:Est-ce que votre projet fait vérifier celles-ci uniquement au niveau global (Préférences Windows) ou au niveau spécifique du projet?
Et êtes-vous sûr que la classe a ouvert (sur laquelle vous essayez de définir un point d'arrêt):
.java
, pas un.class
?Essayez de tout nettoyer et de tout reconstruire, recherchez d'éventuels conflits de pots .
la source
J'ai rencontré ce problème lors de la tentative de démarrage de Tomcat en mode débogage depuis Eclipse. J'avais un fichier de compilation ANT prenant en charge la compilation et le déploiement. Après avoir défini l'indicateur de débogage sur true (comme mentionné dans d'autres réponses) et redéployé l'application, cela a bien fonctionné:
REMARQUE: si vous venez d'ajouter l'indicateur de débogage et recompilé, vous devez toujours redéployer votre application sur le serveur car c'est là qu'Eclipse débogue les fichiers de classe. Très évident, mais facile de passer une heure à se gratter la tête et de se demander pourquoi cela ne fonctionne pas (croyez-moi).
la source
essayez de modifier le que
jre
vous utilisez. Définissez lejre
dans le dossier de à laJDK
place.la source
Étant donné que j'ai 6 versions différentes de Java installées, j'ai dû modifier ma conformité JDK par défaut pour correspondre à celle de la version Java que je voulais utiliser. Par défaut, Eclipse avait le niveau de conformité du compilateur défini sur Java 1.7 lorsque tout a été construit / compilé à l'aide de Java 1.6.
Donc tout ce que j'ai fait, c'est
Maintenant, Eclipse ne se plaint plus de "Impossible d'insérer des informations sur les numéros de ligne absents des points d'arrêt" et les points d'arrêt de débogage fonctionnent réellement !!!
la source
Si rien d'autre ne fonctionne, ouvrez la perspective de débogage, supprimez tous les points d'arrêt existants, puis redéfinissez-les.
la source
Ceci est expliqué en détail ici:
https://github.com/spring-projects/spring-ide/issues/78
Juste pour référence future, c'est la partie pertinente de la réponse (ignorez le fait qui se réfère à une application Spring Boot, le comportement est le même pour beaucoup d'autres cas):
la source
Ma situation était similaire:
spyTask = spy(new Task())
Task.java
)Ce point d'arrêt génère l'erreur en question, chaque fois que je lance
Debug As... > JUnit Test
Pour résoudre le problème, j'ai déplacé le point d'arrêt «vers le haut» dans le test réel (à l'intérieur de TaskTest.java). Une fois l'exécution arrêtée, j'ai rajouté le point d'arrêt là où je l'avais à l'origine (dans Task.java).
J'ai toujours la même erreur mais après avoir cliqué sur "ok", le point d'arrêt a très bien fonctionné.
J'espère que cela aide quelqu'un,
-gale
la source
J'ai eu le même problème lorsque je faisais sur le serveur de la jetée et que je compilais un nouveau fichier .war par ANT. Vous devez créer la même version du compilateur jdk / jre et du chemin de génération (par exemple jdk 1.6v33, jdk 1.7, ....) après avoir défini le compilateur Java comme il a été écrit auparavant.
J'ai tout fait et je ne travaillais toujours pas. La solution a été de supprimer les fichiers .class compilés et la cible du fichier de guerre généré et maintenant son fonctionnement :)
la source
Vous avez ce message avec Spring AOP (semble provenir de la bibliothèque CGLIB). Cliquer sur Ignorer semble bien fonctionner, je peux toujours déboguer.
la source
J'ai trouvé une autre raison à ce message. Je programmais Scala. La solution était:
Maintenant, le débogage devrait fonctionner. Notez que j'ai installé le plugin Scala IDE, cette option peut ne pas être disponible si vous ne l'avez pas.
la source
Les choses ci-dessus n'ont pas fonctionné pour moi. Les solutions ci-dessous ont finalement fonctionné. Configurations de débogage -> Chemin de classe -> Entrées utilisateur -> (Ajoutez le dossier src du projet que vous souhaitez déboguer.)
la source
J'ai eu ce même problème lors du débogage d'un WAR (construit à partir de plusieurs artefacts de projet Eclipse) déployé sur Tomcat.
Je construis tout en utilisant un script de construction ANT. Si c'est ce que vous faites, assurez-vous que l'indicateur debug = true est défini sur chaque tâche javac ant que vous avez. C'était mon seul problème - j'espère que ça aide votre problème!
la source
J'ai eu la même erreur avec JBoss 7.1 .. Et j'ai fait la même chose que Zefiro. J'ai juste ignoré l'erreur et j'ai pu placer des points d'arrêt normalement. Dans mon cas, je construisais un constructeur de fourmis et c'est ma tâche javac:
la source
J'ai eu le même problème, j'ai passé beaucoup de temps à chercher une solution mais ces solutions sont inutiles, donc j'étudie moi-même tous les cas, enfin j'ai découvert un problème de conflit entre les versions JDK. Voici les étapes pour résoudre le problème: 1. Supprimez toutes les versions JDK et JRE, ne conservez qu'une seule version. 2. Définissez le système JAVA_HOME et le compilateur java dans Eclipse est le même. Dans certains cas, l'erreur ci-dessus ne disparaîtra pas, mais nous pouvons exécuter le modèle de débogage.
la source
Une fois que j'ai rencontré la même erreur lorsque j'ai utilisé junit et Mockito, j'ai oublié d'ajouter
@PrepareForTest
pour une classe statique.Ajouter le code ci-dessous a résolu mon problème.
Pas sûr que ce soit le même cas.
la source
Mon problème était que j'avais 2 fichiers JAR et j'essayais de remplacer l'un par l'autre en fonction de son ordre dans l'
Java Build Path => Order & Export
onglet Eclipse, car l'un était pour le débogage et l'autre non (le JAR de débogage étant le premier dans l'ordre). Quand je l'ai fait de cette façon, j'ai dû attacher manuellement une source.J'ai essayé de supprimer le JAR non de débogage et de placer le JAR de débogage dans mon répertoire \ WEB-INF \ lib \, de nettoyer, de construire, etc., et cela a fonctionné. Cette fois (après avoir supprimé la source attachée), cela me permettrait automatiquement de parcourir le code de débogage, sans avoir à attacher manuellement une source. Les points d'arrêt et le débogage ont également fonctionné.
Dans le cas où quelqu'un a encore des problèmes, j'ai également essayé toutes ces solutions particulières mentionnées dans les autres réponses:
Add line number attributes...
org.eclipse.jdt.core.prefs
comme mentionné dans une autre réponse: https://stackoverflow.com/a/31588700/1599699J'ai également fait la fermeture habituelle du serveur (et en m'assurant que java.exe est réellement fermé ...), en supprimant les répertoires \ build \ dans les deux projets, en redémarrant Eclipse avec le paramètre -clean, en recréant le JAR de débogage, en rafraîchissant, nettoyage et construction du projet avec le fichier JAR de débogage, démarrage du serveur en mode débogage, publication / nettoyage et point d'arrêt.
la source
J'ai fait tout ce qui est indiqué ci-dessus lors de la compilation / construction des bocaux - j'avais toujours le même problème.
Finalement, les changements de jvmarg répertoriés ci-dessous lors du démarrage du serveur sont ce qui a finalement fonctionné pour moi:
1) Supprimé / commenté un tas d'arguments jvm concernant javaagent et bootclasspath.
2) Activé / non commenté la ligne suivante:
Ensuite, lorsque je démarre le serveur, je peux atteindre mes points d'arrêt. Je soupçonne que l'agent java interférait d'une manière ou d'une autre avec la capacité d'Eclipse à détecter les numéros de ligne.
la source
Vérifiez / procédez comme suit:
1) Sous "Fenêtre -> Préférences -> Java -> Compilateur -> Génération de fichier de classe", toutes les options doivent être à True:
2) Dans le dossier .settings de votre projet, recherchez un fichier appelé org.eclipse.jdt.core.prefs. Vérifiez ou définissez org.eclipse.jdt.core.compiler.debug.lineNumber = generate
3) Si la fenêtre d'erreur apparaît toujours, cochez la case pour ne pas afficher le message d'erreur.
4) Nettoyez et construisez le projet. Démarrez le débogage.
Normalement, la fenêtre d'erreur ne s'affiche plus et les informations de débogage s'affichent correctement.
la source
J'ai également rencontré ce problème. J'utilise un script de construction de fourmi. Je travaille sur une application héritée, j'utilise donc jdk version 1.4.2. Cela fonctionnait alors j'ai commencé à regarder autour de moi. J'ai remarqué que dans la configuration de débogage de l'onglet JRE, la version de Java avait été définie sur 1.7. Une fois que je l'ai changé à 1,4, cela a fonctionné.
J'espère que ça aide.
la source
J'essayais de déboguer le gestionnaire de journalisation et je devais changer le jre en jdk, puis sélectionner ce jdk dans l'onglet "principal", "Java Runtime Environment" | "runtime JRE" de la configuration de débogage alors tout allait bien.
la source
J'ai vu ce problème lorsque j'ai annoté une classe avec @ManagedBean (javax.annotation.ManagedBean). Le message d'avertissement est apparu lors de l'exécution de l'application nouvellement conforme sur JBoss EAP 6.2.0. L'ignorer et courir de toute façon n'a pas aidé - le point d'arrêt n'a jamais été atteint.
J'appelais ce bean en utilisant EL dans une page JSF. Maintenant ... il est possible que @ManagedBean ne soit pas bon pour ça (je suis nouveau sur CDI). Lorsque j'ai changé mon annotation en @Model, mon bean a été exécuté mais l'avertissement de point d'arrêt a également disparu et j'ai atteint le point d'arrêt comme prévu.
En résumé, il semblait certainement que l'annotation @ManagedBean fouillait les numéros de lignes, que ce soit ou non la mauvaise annotation à utiliser.
la source
Assurez-vous que le projet dans lequel se trouve la classe principale du runtime est le même projet dans lequel se trouve la classe dans laquelle vous avez des points d'arrêt . Si ce n'est pas le cas, assurez-vous que les deux projets se trouvent dans le chemin de classe de la configuration d'exécution et apparaissent avant les fichiers JAR et les dossiers de classe.
la source