web-dev-qa-db-fra.com

Impossible de définir le point d'arrêt Java dans Intellij IDEA

J'essaie de placer des points d'arrêt dans les sources de GoogleAppEngine (SDK 1.7.0) mais IDEA Ultimate (11.0.2) n'arrête pas de me dire Warning: No executable code found at line 482 in class com.google.appengine.api.memcache.AsyncMemcacheServiceImpl.

Je reçois ce message d'erreur lorsque j'exécute le code à partir de tests unitaires et que je lance le serveur de développement.

C'est assez ennuyant. Quoi qu'il en soit, mes sources se trouvent dans un répertoire externe (par rapport au répertoire IDEA home et au répertoire du projet) et mes fichiers jar se trouvent dans le répertoire lib du kit de développement logiciel Appengine.

Mes fichiers jar sont ajoutés en tant que bibliothèque de projet au module et mes sources sont attachées à cette bibliothèque. Je jouais aussi avec les dépendances de modules, mais sans aucune chance. Finalement, j'ai décidé de placer cette bibliothèque dans le champ Compile, mais c'était une mauvaise idée, car le SDK fournit ces fichiers jar au moment de l'exécution. J'ai donc décidé de revenir au champ Fourni.

J'ai également joué avec la case à cocher d'exportation de l'onglet Dépendances des modules, mais je pense que cela n'a aucune importance, selon la aide Web , l'exportation est importante uniquement lorsque vous avez des modules dépendants et que vous souhaitez rendre votre bibliothèque disponible dans ces modules aussi.

Quoi qu'il en soit, cette question s'est posée il y a 4 ans également. Je me demande donc s’il est vraiment si difficile de résoudre ce problème?

Je suis très déçu maintenant. Je n’ai eu aucun problème avec IDEA jusqu’à présent ... j’ai vu que ce problème qui est apparu à d’autres personnes aussi, donc ce n’est pas unique, je suppose.

Toute aide est appréciée.


J'ai modifié ma question en raison de mes expériences javap ci-dessous: Il semble que les classes et les sources soient ET NON désynchronisées. J'ai vérifié la révision 1.7.0 liée à SVN, et j'utilise le SDK 1.7.0, ils ne devraient donc pas être désynchronisés.

46
Captain Fogetti

J'ai eu des problèmes similaires et diverses tentatives ont été appliquées. Voici mes étapes habituelles:

  1. Si vous utilisez des dépendances Maven, accédez à Projets Maven -> Actualiser.
  2. Si cela ne fonctionne pas, essayez le menu principal -> Construire -> Reconstruire le projet
  3. Si cela ne fonctionne toujours pas, essayez le menu principal -> Fichier -> Invalider le cache/redémarrer
  4. Si cela ne fonctionne toujours pas, alors $ CATALINA_BASE/bin/catalina.sh s'arrête, puis lancez

Après cela, il couvre généralement 99% des problèmes. Sinon, vous devrez probablement examiner d'autres possibilités.

60
Matthew Chen

J'ai eu le même problème dans Intellij. Je ne pouvais pas mettre un point d'arrêt sur l'un des extraits de code, j'ai changé le numéro de ligne du code et j'ai ensuite pu mettre un point d'arrêt. On dirait un bug dans intellij

15
vaibhav.g

J'ai trouvé d'autres cas dans lesquels des personnes ont signalé que IDEA indiquait "Aucun code exécutable trouvé". Un schéma courant est qu'ils essayaient de déboguer du code qui avait été construit sans informations de débogage. Vérifiez que vous compilez avec le drapeau "-g" (ou équivalent).

7
Stephen C

Le problème réside essentiellement dans le fait que la machine virtuelle Java exécute un fichier de classe (classe simple ou chargée à partir du fichier jar à partir du chemin de classe), qui ne correspond pas à la source utilisée par le débogueur simple: assurez-vous que la source représente la classe en cours d'exécution ..__ Donc, pour résoudre le problème, vous pouvez actualiser la synchronisation des sources avec les classes, etc.

4
Joseph

La question est plutôt ancienne mais je pensais que mon expérience pourrait aider quelqu'un à l'avenir. Dans mon cas, j'essayais de déboguer du code qui n'était pas compilé avec les informations de débogage. J'utilise maven dans lequel le fichier pom parent d'origine avant modification ressemblait à quelque chose comme ci-dessous dans la section build.

<build>
    <pluginManagement>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <target>${javaCompilerVersion}</target>
              <source>${javaCompilerVersion}</source>
              <encoding>UTF-8</encoding>
            </configuration>
        </plugin>
        <!--More plugins...-->
     </pluginManagement>
</build>

J'ai changé la section ci-dessus pour la faire ressembler à celle ci-dessous.

<build>
    <pluginManagement>
        <plugin>
            <groupId>org.Apache.maven.plugins</groupId>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>2.1</version>
            <configuration>
              <target>${javaCompilerVersion}</target>
              <source>${javaCompilerVersion}</source>
              <encoding>UTF-8</encoding>
              <debug>true</debug>
              <debuglevel>lines,vars,source</debuglevel>
            </configuration>
        </plugin>
        <!--More plugins...-->
     </pluginManagement>
</build>

Notez les éléments ajoutés <debug> et <debuglevel>. L'élément debuglevel peut prendre n'importe quelle combinaison des trois arguments séparés par des virgules.

Après avoir compilé avec ce changement, j'ai finalement réussi à mettre des points d'arrêt dans IDEA.

3
Willa

J'ai pu résoudre ce problème en recompilant la classe en question: Build -> Recompile (filename.Java)

2
reubot

J'ai eu un problème similaire, causé par une erreur dans ma configuration Tomcat, sous l'onglet Deployment, "Deploy at the server startup". Je l'avais accidentellement changé pour un projet très similaire avec ": la guerre a explosé". Quand je l'ai changé, cela a bien fonctionné. 

1
kiwi

Avait le même problème, a découvert que la version du code sur le serveur et celle que je débogue sont différentes. Après la synchronisation du code, le problème a été résolu.

1
raka

Veuillez vous assurer que vous n'avez pas exécuté Proguard. Ça m'a aidé.

1
Alexey Taran

Menu -> Fichier -> Invalider le cache/redémarrer

Cela a fonctionné pour moi sous IntelliJ 13.0.2

1
Rahul Chintakunta

Si vous utilisez certains serveurs, ils passeront en "mode de mémoire réduite", cela signifie qu'ils ne débogueront pas pour vous, quelles que soient les options ou les caches que vous invalideriez.

Vous devez arrêter votre serveur, augmenter les paramètres de mémoire sur les options transmises à Java et redémarrer votre serveur. Consultez les journaux pour vous assurer que vous ne recevez pas de rapport du type "fonctionnant en mode mémoire faible". 

1
PeterS

J'ai eu le même problème en utilisant la configuration de débogage dans mon cas Tomcat . J'ai tout essayé ci-dessus, mais rien . Quand je viens de reconfigurer le Tomcat (debug> modifier la configuration> supprimer le Tomcat> l'ajouter à nouveau travaillait enfin :)

0
eldad marciano

Vérifiez votre espace disque et libérez de la mémoire. Si vous manquez d'espace disque, même si votre serveur n'est pas en "mode mémoire réduite", intelliJ n'allouera pas l'espace nécessaire pour mettre en cache les classes requises pour le débogage. En conséquence, cela ne vous permettra pas de définir le point de rupture.

0
Vaishali Kulkarni

Dans mon cas, j'ai tué tous les processus en cours d'exécution sur le périphérique, puis je l'ai déconnecté et reconnecté.

0
Vic Torious

Je travaillais sur un plug-in Intellij et lorsque le bac à sable Intellij est apparu, ce qui a finalement résolu mon problème, c'est qu'une fois le bac à sable intellij apparu, je l'ai reconstruit à partir de là.

Après cela, j'ai construit à la fois mon Intellij et le bac à sable Intellij et ils se sont finalement synchronisés.

0
Godrules500