我无法使用Gradle、Dropwizard和IntelliJ调试JavaEE应用程序

我无法使用Gradle、Dropwizard和IntelliJ调试JavaEE应用程序,java,gradle,intellij-idea,dropwizard,Java,Gradle,Intellij Idea,Dropwizard,我有一个带有Gradle的JavaEE应用程序,我在官方文档(针对Maven)和Gradle的另一个指南之后添加了Dropwizard:

 该应用程序配置良好,并使用Gradle和Dropwizard运行,但我想使用断点调试该应用程序,但我无法这样做。我遵循以下指南: 



 它看起来正常,因为当我运行命令时: sudo./gradlew run-Dorg.gradle.debug=true——没有守护进程 Gradle等待我在IntelliJ中单击远程调试配置(我创建了它)来运行应用

我有一个带有Gradle的JavaEE应用程序,我在官方文档(针对Maven)和Gradle的另一个指南之后添加了Dropwizard:



该应用程序配置良好,并使用Gradle和Dropwizard运行,但我想使用断点调试该应用程序,但我无法这样做。我遵循以下指南:







它看起来正常,因为当我运行命令时:

sudo./gradlew run-Dorg.gradle.debug=true——没有守护进程

Gradle等待我在IntelliJ中单击远程调试配置(我创建了它)来运行应用程序,这样它应该是正常的。然而,它从未停止在我的断点(看起来它忽略了它们)。有什么想法吗?

我分享我认为重要的文件:



build.gradle:

apply plugin: 'com.google.protobuf'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'

project.ext {
    dropwizardVersion = '1.3.0'
    configPath = "$rootProject.projectDir/config/"
}

//
// Loads of repositories and dependencies including dropwizard
//

protobuf {
// Configure the protoc executable
    protoc {
        // Download from repositories
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }

    generateProtoTasks.generatedFilesBaseDir = 'generated'

    generateProtoTasks {
        // all() returns the collection of all protoc tasks
        all().each { task ->
            // Here you can configure the task
        }

        // In addition to all(), you may get the task collection by various
        // criteria:

        // (Java only) returns tasks for a sourceSet
        ofSourceSet('main')

    }
}

mainClassName = "com.company.MyApplication"

run {
    args 'server', configPath + ‘myapplication_config.yml'
}

shadowJar {
    mergeServiceFiles()
    exclude 'META-INF/*.DSA'
    exclude 'META-INF/*.RSA'
}

jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

build.dependsOn shadowJar
public class MyApplicationConfiguration extends Configuration {

}
MyApplicationApplication(Dropwizard应用程序):



public class MyApplicationApplication extends Application<MyApplicationConfiguration> {

    public static void main(String[] args) throws Exception {

        new MyApplicationApplication().run(args);
    }

    @Override
    public void run(MyApplicationConfiguration configuration,
                    Environment environment) {

        environment.jersey().register(new RESTUserBilling());

    }
}
myapplication\u config.yml:

apply plugin: 'com.google.protobuf'
apply plugin: 'maven'
apply plugin: 'maven-publish'
apply plugin: 'application'
apply plugin: 'com.github.johnrengelman.shadow'

project.ext {
    dropwizardVersion = '1.3.0'
    configPath = "$rootProject.projectDir/config/"
}

//
// Loads of repositories and dependencies including dropwizard
//

protobuf {
// Configure the protoc executable
    protoc {
        // Download from repositories
        artifact = 'com.google.protobuf:protoc:3.0.0'
    }

    generateProtoTasks.generatedFilesBaseDir = 'generated'

    generateProtoTasks {
        // all() returns the collection of all protoc tasks
        all().each { task ->
            // Here you can configure the task
        }

        // In addition to all(), you may get the task collection by various
        // criteria:

        // (Java only) returns tasks for a sourceSet
        ofSourceSet('main')

    }
}

mainClassName = "com.company.MyApplication"

run {
    args 'server', configPath + ‘myapplication_config.yml'
}

shadowJar {
    mergeServiceFiles()
    exclude 'META-INF/*.DSA'
    exclude 'META-INF/*.RSA'
}

jar {
    manifest {
        attributes 'Main-Class': mainClassName
    }
}

build.dependsOn shadowJar
public class MyApplicationConfiguration extends Configuration {

}




# Logging settings.
logging:

  # The default level of all loggers. Can be OFF, ERROR, WARN, INFO, DEBUG, TRACE, or ALL.
  level: ERROR, DEBUG

  # Logger-specific levels.
  loggers:

    # Sets the level for 'com.example.app' to DEBUG.
    com.company: DEBUG

  appenders:
  - type: console
  - type: file
    threshold: INFO
    logFormat: "%-6level [%d{HH:mm:ss.SSS}] [%t] %logger{5} - %X{code} %msg %n"
    currentLogFilename: /var/log/dropwizard/myapplication.log
    archivedLogFilenamePattern: /var/log/dropwizard/myapplication-%d{yyyy-MM-dd}-%i.log.gz
    archivedFileCount: 7
    timeZone: UTC
    maxFileSize: 10MB

server:
  applicationContextPath: /myapplication
  adminConnectors:
  -
    port: 8091
    type: http
  applicationConnectors:
  -
    port: 80
    type: http
IntelliJ IntelliJ 2018.2.1(社区版)中的远程配置

格拉德尔2.12

Java版本1.8.0_181

Dropwizard版本1.3.0


通过使用
-Dorg.gradle.debug=true
,您正在调试gradle的流程,而不是正在处理的应用程序。Gradle在不同的进程中运行应用程序。您应该尝试
gradle--debug jvm run
。阅读更多关于这个和

和Gradle,说真的。2.12太老了。使用


如果2.12不理解调试jvm(可能是这样),那么只需找到一种方法,向应用程序运行的jvm(而不是Gradle本身)提供如下字符串-
-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=5005

谢谢,它可以工作。Gradle2.12理解——调试jvm。不过,我会听从你的建议,并尝试更新Gradle。