如何配置 VScode 来调试 gradle/kotlin 项目?

ygi*_*ini 6 gradle kotlin visual-studio-code vscode-debugger vscode-remote

目前正在尝试使用 devcontainer 来整合 VScode 中后端和前端的开发工作流程,而不是后端使用 InteliJ,前端使用 VScode,同时考虑到使用 Codespace/Gitpod,目标是简化整个堆栈的调试。

我已经阅读了 VScode 中 gradle 的多个教程,并最终找到了可以构建和运行的内容,但是调试器不起作用,而且我没有找到任何教程来处理该部分。

迄今为止最好的结果是使用以下任务和 VScode 的 Gradle 扩展:

        {
            "type": "gradle",
            "id": "/workspaces/mycode/serverrunMyCode",
            "script": "run",
            "description": "Runs this project as a JVM application",
            "group": "application",
            "project": "MyCode",
            "buildFile": "/workspaces/mycode/server/build.gradle.kts",
            "rootProject": "MyCode",
            "projectFolder": "/workspaces/mycode/server",
            "workspaceFolder": "/workspaces/mycode/server",
            "args": "",
            "javaDebug": true,
            "problemMatcher": [
                "$gradle"
            ],
            "label": "Server Debug"
        }
Run Code Online (Sandbox Code Playgroud)

服务器通过 VScode 正确构建并运行,但调试器不起作用。

我尝试过 Kotlin 扩展和以下启动设置,但在这里我遇到了缺少依赖项的问题

    "configurations": [
        {
            "type": "kotlin",
            "request": "launch",
            "name": "Kotlin Launch",
            "projectRoot": "${workspaceFolder}",
            "mainClass": "io.mycode.ServerKt"
        }
    ]
Run Code Online (Sandbox Code Playgroud)

依赖错误:

[INFO] main      Connected to client
[INFO] async1    Resolving dependencies for 'server' through Gradle's CLI using tasks [kotlinLSPProjectDeps]...
[WARN] async1    Could not resolve classpath using Gradle: ClassLoader.getSystemResourceAsStream(scriptName) must not be null
[INFO] async1    Could not resolve kotlin-stdlib using Maven: Cannot invoke "java.nio.file.Path.getFileSystem()" because "path" is null
[INFO] async1    Successfully resolved kotlin-stdlib using Gradle
[INFO] async1    Starting JVM debug session with main class io.mycode.ServerKt
Error: Unable to initialize main class io.mycode.ServerKt
Caused by: java.lang.NoClassDefFoundError: mu/KLogger
[INFO] eventBus  Sent exit event
[INFO] async0    Exiting JDI session
Run Code Online (Sandbox Code Playgroud)

所以我的问题很简单:让 VScode 处理 gradle/kotlin 项目的工作配置是什么?包括调试。

谢谢

小智 2

我遇到了一个非常类似的问题,并通过从源代码编译 Kotlin 调试适配器并配置 Kotlin VSCode 扩展以使用编译版本来解决该问题。您可以在这里找到来源。