【发布时间】: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