El depurador Intellij IDEA no funciona en el proyecto Gradle Vert.X

Estoy desarrollando un proyecto usando Vert.X framework usando la herramienta de compilation Gradle . El problema que tengo es que los puntos de interrupción en IntelliJ simplemente no funcionan de ninguna manera que he intentado.

Aquí hay una configuration de ejecución para Vert.X que uso en Gradle:

 run { args = [ 'run', mainVerticleName, "-conf", confPath, "--networkingeploy=$project.ext.watchForChange", "--launcher-class=$mainClassName", "--on-networkingeploy=$project.ext.doOnChange" ] } 

Entonces la implementación se realiza usando Gradle , se ejecuta sin problemas, el depurador IntelliJ está conectado, pero los puntos de interrupción no funcionan .

Las forms en que he tratado de hacerlo funcionar:

1) Configuración de ejecución de Gradle. Aquí hay una configuration de ejecución para Intellij IDEA : Intellij Run Configuration usando Gradle

Intenté usar una herramienta de debugging remota, aplicación iniciada con las siguientes opciones de VM:

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000

Pero esto no funcionó.

2) Configuración de la aplicación: IntelliJ Run Configuration usando la aplicación

En este caso, simplemente no puedo comenzar el proyecto ya que recibo el siguiente post en el inicio:

Error: Could not find or load main class io.vertx.core.Launcher

Vert.X Core biblioteca Vert.X Core encuentra en la ruta de Vert.X Core y la configuration parece ser correcta, por lo que no se puede get si el problema es.

El código fuente del proyecto es público y se puede encontrar en GitHub :

vertx-gradle-architecture-starter

Versión Vert.X – 3.4.0. La versión Gradle – 3.4.1. Versión de IntelliJ IDEA – 2016.3.5. OS – MacOS Sierra 10.12.3.

Un hecho interesante es cuando implemento Vert.X partir de testings, funcionan los puntos de interrupción. ¿Alguna idea de por qué los puntos de interrupción no funcionan en los casos que he descrito anteriormente?

Aquí hay soluciones para ambos problemas. Gracias a @CrazyCoder por su ayuda en esto.

1) el command de run se ejecuta en VM separada. Entonces, para que funcione, agregué --java-opts argumento al guión:

 run { args = [ 'run', mainVerticleName, "-conf", confPath, "--networkingeploy=$project.ext.watchForChange", "--launcher-class=$mainClassName", "--on-networkingeploy=$project.ext.doOnChange", // used for attaching remote debugger "--java-opts", "-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=8000" ] } 

Esto permite conectar Remote debug configuration de Remote debug en el puerto 8000 .

2) Por defecto, Intellij IDEA crea modules separados por sets fuente, así que tuve sets fuente para los modules api_main y api_test . Después de desactivar esta function, la ejecución de debugging de la aplicación comenzó a funcionar.

Esto se puede desactivar en la Configuración de Gradle. Preferences -> Build, Execution, Deployment -> Build Tools -> Gradle : desmarque crear modules separados por set de origen.

enter image description here

Este es un problema de IntelliJ IDEA – reference .

Tuve exactamente el mismo problema y el siguiente funcionó para mí. Las opciones de networkingistribución, iniciador y relanzamiento no son necesarias en intelliJ. si eliminamos los trabajos de debugging una vez finalizada la aplicación.

 run { args = [ 'run', mainVerticleName, "-conf", confPath ] } 
  • Vert.x Kotlin Type Mismatch requinetworking Controlador <AsyncResult <Unit >> found (Handler <AsyncResult <Unit >>) -> Unidad
  • En Vertx, necesito networkingirigir todas las requestes HTTP a la misma URL, pero para HTTPS
  • Sirve favicon.ico y otros files estáticos con VertX
  • Proxies de service Vert.x de Kotlin con vertx-codegen
  • Respuesta fragmentada de Vert.x con los datos de la database usando BLOB e hibernación
  • Tengo una request de Vertx y necesito calcular una URL externa visible (pública)
  • VertX Web no elimina cookies