web-dev-qa-db-fra.com

Comment déboguer une application spring-boot avec IntelliJ IDEA Edition communautaire?

J'ai des difficultés à déboguer une application Java Spring-Boot avec IntelliJ IDEA Community Edition. Le problème principal est que le IDE ne s'arrête pas sur un point d'arrêt, même le programme l'exécute sûrement. Comment puis-je faire en sorte que l'IntelliJ IDEA s'arrête sur le point d'arrêt?

Pour information supplémentaire, voici mes configurations d'exécution:

Configuration Maven avec une commande comme: spring-boot: run. Avant le lancement, je construis le projet.

25
Ville Miekk-oja

Le seul moyen de le faire fonctionner était de créer une configuration de débogage séparée et distante. 

Donc, allez à éditer les configurations-> Remote -> +. Ensuite, démarrez votre application normalement via intelliJ. Puis passez à la configuration distante nouvellement créée. Au lieu de l'exécuter, appuyez sur debug. Le débogueur doit maintenant être prêt. Vous pouvez définir des points d'arrêt et le débogueur les arrêtera.

2
Ville Miekk-oja

Pour moi, ces étapes fonctionnent:

  1. Sélectionnez le menu Exécuter -> Modifier les configurations ... 
  2. Créer une nouvelle configuration À distance. Par défaut, vous n'avez pas besoin de modifier les paramètres:
    -agentlib: jdwp = transport = dt_socket, serveur = y, suspendre = n, adresse = 5005 . Mais si vous souhaitez par exemple suspendre la JVM avant de vous connecter, vous pouvez changer. suspendre = y . Ou vous pouvez changer de port etc.
  3. Copiez la ligne de commande en fonction de la version de votre machine virtuelle Java et enregistrez la configuration.
  4. Dans la fenêtre Terminal, exécutez votre application avec (dans le cas d’utilisation Maven et JVM 1.5 et versions ultérieures) mvn clean spring-boot: exécuter -Drun.jvmArguments = "- agentlib: jdwp = transport = dt_socket, serveur = y, suspendre = n, adresse = 5005 "
  5. Connectez-vous à votre application en exécutant votre configuration à distance créée précédemment à l'étape 2. Vous pouvez maintenant déboguer votre application.
25
piphonom

La seule approche qui a fonctionné pour moi consiste à exécuter ou à déboguer une application directement à partir d'Intellij Idea. Il suffit d'ouvrir la classe qui contient

 public static void main(String[] args) {
        SpringApplication.run(MyApp.class, args);
    }

Et cliquez avec le bouton droit de la souris-> Déboguer mon application

21
stinger

Le problème est rapporté ici

vous pouvez le résoudre en envoyant le paramètre fork = false au but maven.

par exemple;

spring-boot:run -Dfork=false

note: ceci est une solution de contournement

12
Abdullah Gürsu

J'ai constaté que l'inclusion de Spring Dev Tools dans ma construction entraînait l'interruption du débogage IntelliJ (selon votre description ci-dessus). Si vous n'utilisez pas cette fonctionnalité, supprimez-la simplement de votre construction. 

Si vous utilisez Maven, les lignes ci-dessous doivent être supprimées de pom.xml.

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-devtools</artifactId>
    </dependency>
5
Burton

la réponse de piphonom est bonne, mais vous devez faire un peu plus, ce qui consiste à ajouter le jvmArguments au plugin maven comme ceci

<plugin>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-maven-plugin</artifactId>
    <configuration>
        <jvmArguments>
            -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=y,address=5005
        </jvmArguments>
    </configuration>
</plugin>

pour plus d’informations sur le debuge à distance pour le projet Spring Boot, lisez this

2
kite

sur intelliJ goto run-> modifier la configuration -> appuyer sur le '+' -> choisir 'Application'

remplir les champs: classe principale, répertoire de travail, chemin de classe du module

0
Ziv.Ti