【问题标题】:How do I debug a Maven project in VS Code?如何在 VS Code 中调试 Maven 项目?
【发布时间】:2020-02-27 23:09:42
【问题描述】:

我正在使用 VS Code 编写 Java,并带有 Maven 构建插件。经过大量摆弄配置后一切正常,除了调试。调试配置如下所示:

// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
    {
        "type": "java",
        "name": "Debug (Launch) - Current File",
        "request": "launch",
        "mainClass": "${file}"
    },
    {
        "type": "java",
        "name": "Debug (Launch)-App<music-03>",
        "request": "launch",
        "mainClass": "ptcs.App",
        "projectName": "music-03"
    }

当我使用第二个配置启动调试器时,调试我的项目应用程序(不启动当前文件),我收到一个错误:

~/Sync/projects/music/music-03:cd /Users/Mike/Sync/projects/music/music-03 ; /Library
/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home/bin/java 
-agentlib:jdwp=transport=dt_socket,server=n,suspend=y,address=localhost:58363 
-Dfile.encoding=UTF-8 @/var/folders/pn/3p41p2fj14d50n707c7x2p4c0000gn
/T/cp_90sfb6m3zinsbhwyvyknqb5hv.argfile ptcs.App 

Error: Could not find or load main class
@.var.folders.pn.3p41p2fj14d50n707c7x2p4c0000gn.T.cp_90sfb6m3zinsbhwyvyknqb5hv.argfile

请注意,我可以毫无问题地运行 maven 编译和打包目标,我什至可以生成带有依赖项的可执行 jar。我的 pom.xml 在这里复制有点长,但如果有人能给我提示我应该从中发布什么,我会这样做。

【问题讨论】:

  • 为什么`"mainClass": "${file}"`指向的是文件名而不是类名?
  • 我不使用那个(用于启动单个文件的配置)。我认为它适用于一个文件具有一个公共类的情况,并且根据 Java 要求,基本文件名和类名相同。
  • 这里的问题是假设“@....”对 jvm 有特殊意义(可能包含一些额外的参数)它没有,所以它被解释为类名称(因为这是 JVM 下一步所期望的)。然后,“pcts.App”不会被解释为类名,而是传递给 main 方法的参数中的第一个条目。
  • 我知道这一点,但那不是我在运行该命令.. 它是 VS Code。所以问题是.. 为什么 VS Code 会尝试以这种方式运行 java,我该如何解决?
  • 尝试用mainClass添加包名如"mainClass": "com.my.test.App",

标签: java maven visual-studio-code


【解决方案1】:

我最终想通了。命令行中的 @ 符号仅适用于 Java 1.9 及更高版本,Java 调试器插件错误地将其放入其命令行中。

一种解决方案是将项目更新到更高版本的 Java。另一种解决方案是将shortenCommandLine : jarManifest 添加到launch.json。第三种可能性是将 $JAVA_HOME 指向您的 JDK 位置并重新启动 VS Code。

【讨论】:

  • 我使用了第二种解决方案 - "shortenCommandLine": "jarmanifest" 添加到运行项目模板中
猜你喜欢
  • 2018-10-25
  • 2021-05-31
  • 1970-01-01
  • 2020-11-04
  • 1970-01-01
  • 2021-05-28
  • 1970-01-01
  • 2021-05-12
  • 2019-10-10
相关资源
最近更新 更多