388 votes

Eclipse - Impossible d'installer un point d'arrêt en raison de l'absence d'attributs de numéro de ligne

J'obtiens cette étrange erreur dans Eclipse lorsque j'essaie 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 sans succès.

0 votes

Pouvez-vous faire un javap -verbose sur le fichier de classe et coller l'information ici ? Voyez s'il y a vraiment un numéro de ligne.

3 votes

Salut yx, j'ai fait un javap sur cette classe. Il génère les numéros de ligne

0 votes

Bizarrement, je viens de rencontrer ce problème avec le plugin BlackBerry, Eclipse 3.5, rien à voir avec Tomcat. Et moi aussi, il s'arrête aux breakpoints, sauf pour l'un d'entre eux... si je trouve une réponse, je posterai.

236voto

Zefiro Points 1039

J'ai eu le même message d'erreur dans Eclipse 3.4.1, SUN JVM1.6.0_07 connecté à Tomcat 6.0 (en mode débogage sur une autre machine, Sun JVM1.6.0_16, la connexion de débogage a fonctionné correctement).

Window --> Preferences --> Java --> Compiler --> Classfile Generation : "ajouter des attributs de numéro de ligne au fichier de classe généré" a été vérifié. J'ai fait un nettoyage, une recompilation. Je l'ai décoché, recompilé, coché, recompilé. Je me suis assuré que le projet utilisait bien les paramètres globaux. Toujours le même message.

Je suis passé à la construction par ant, en utilisant

<javac srcdir="./src/java" destdir="./bin" debug="true">

Toujours le même message.

Je n'ai pas trouvé la cause de ce message et pourquoi il ne disparaissait pas. Bien que cela semble avoir un rapport avec la session de débogage de Tomcat en cours d'exécution : lorsqu'elle est déconnectée, la recompilation résout le problème. Mais en connectant le débogueur à Tomcat ou en définissant de nouveaux points d'arrêt pendant une session de débogage connectée, il réapparaît.

Cependant, il s'est avéré le message était faux : J'ai effectivement pu déboguer et définir des points d'arrêt, avant et pendant le débogage ( javap -l a également montré les numéros de ligne). Alors ignorez-la :)

35 votes

Ce qui précède n'a pas fonctionné pour moi. J'ai dû cliquer sur l'icône "Remove all Breakpoints" dans la vue Eclipse > Breakpoints, puis réinsérer les points d'arrêt. Cela a fonctionné.

3 votes

J'ai fermé tous les autres projets, supprimé tous les points d'arrêt, effectué un changement aléatoire dans le fichier, nettoyé le projet, introduit à nouveau le point d'arrêt. Cela a fonctionné pour moi

4 votes

Ajout de debug="true" à la javac tâche de l ant construire script a fonctionné.

120voto

  1. Dans le menu d'eclipse, allez à Fenêtre->Préférences->Java->Compilateur
  2. Décochez la case "Ajouter les attributs de numéro de ligne...".
  3. Cliquez sur Appliquer -> Oui
  4. Cochez la case "Ajouter un attribut de numéro de ligne...".
  5. Faites une nouvelle demande.
  6. Bon débogage

29voto

user584572 Points 71

Cela a réglé mon problème :

  1. Fenêtre -> préférences -> serveur -> environnements d'exécution
  2. Apache Tomcat -> modifier
  3. Sélectionnez un JDK au lieu de JRE

3 votes

Cela a réglé mon problème (j'avais la mauvaise version de jdk spécifiée dans la configuration de ant). Cela a résolu le problème, mais eclipse STILL m'a donné le message d'erreur. Assurez-vous donc d'essayer de déboguer votre code après avoir effectué cette modification - ne laissez pas le message d'erreur vous décourager.

0 votes

Même si votre application n'est pas web, la solution est Ok, en faisant Installed JREs par défaut JDK au lieu de JRE

0 votes

Je connais la règle, mais il y a beaucoup de réponses ici. Celle-ci fonctionne pour moi en novembre 2019, mais j'ai également modifié l'environnement d'exécution principal, ce qui résout le problème à 100%.

19voto

Paizo Points 1955

Pour Printemps Les questions connexes considèrent que dans certains cas, il génère des classes "sans numéros de ligne" ; par exemple, une @Service classe annotée sans interface, ajoutez l'interface et vous pourrez déboguer. voir ici pour un exemple complet.

@Service("SkillService")
public class TestServiceWithoutInterface {
   public void doSomething() {
      System.out.println("Hello TestServiceWithoutInterface");
   }
}

Le service ci-dessus aura une interface générée par spring qui causera des "numéros de ligne manquants". L'ajout d'une interface réelle résout le problème de génération :

public interface TestService {
    void doSomething();
}

@Service("SkillService")
public class TestServiceImpl implements TestService {
   public void doSomething() {
      System.out.println("Hello TestServiceImpl");
   }
}

14voto

J'ai la réponse à ce problème du côté du BlackBerry SDK : Pour une raison quelconque, peu importe le nombre de fois où j'ai modifié les options dans le compilateur, le fichier de paramètres sous-jacent n'a pas changé.

Regardez dans le dossier .settings de votre projet pour trouver un fichier appelé org.eclipse.jdt.core.prefs .

Vous pouvez y modifier les paramètres manuellement :

org.eclipse.jdt.core.compiler.debug.lineNumber=generate

edit : Suite à cela, j'ai remarqué que parfois je peux ignorer l'alerte donnée par Eclipse, et il s'arrêtera toujours à l'endroit requis... de plus en plus curieux... Je mets cela dans le panier des choses que l'on apprend à gérer quand on travaille comme dev.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X