使用vscode运行java项目时出现问题

使用vscode运行java项目时出现问题,java,visual-studio-code,Java,Visual Studio Code,我下载了一个在eclipse/intelliJ等中运行良好的现有项目。我想让它在VisualStudio代码中运行。 我下载了vscode在打开.java文件时建议的各种扩展,我配置了launch.json文件以查找我的主类等。 我按F5启动应用程序,得到的错误是: Error: Could not find or load main class pacman.Executor Caused by: java.lang.ClassNotFoundException: pacman.Executo

我下载了一个在eclipse/intelliJ等中运行良好的现有项目。我想让它在VisualStudio代码中运行。 我下载了vscode在打开.java文件时建议的各种扩展,我配置了launch.json文件以查找我的主类等。 我按F5启动应用程序,得到的错误是:

Error: Could not find or load main class pacman.Executor
Caused by: java.lang.ClassNotFoundException: pacman.Executor
这不是我遇到的唯一错误,在这个错误出现之前,我遇到了这个问题:

build project cannot be resolved to a type
在我在main方法中使用的一些类中。这个错误似乎刚刚消失,我不知道我是离解决问题更远还是更近,我无法复制这个错误

My launch.json如下所示:

"configurations": [
    {
        "type": "java",
        "name": "Debug (Launch)-Executor",
        "request": "launch",
        "cwd": "${workspaceFolder}",
        "console": "internalConsole",
        "stopOnEntry": false,
        "mainClass": "pacman.Executor",
        "args": ""
    }
]
我担心这个问题可能与类路径有关,但我已经尝试了几种方法,比如在launch.json中直接将它设置到我的jdk和jre中,但运气不好

另外,目前我没有使用maven或类似的东西——在使用RedhatJava插件时,为了从vscode中构建项目,这是必要的吗

我希望有人能帮助我解决我的困惑,或者知道问题可能是关于什么的


提前感谢。

我不确定问题的确切原因,但您可以通过向工作区添加任务(创建
tasks.json
文件并将其放入运行程序之前启动的
.vscode
文件夹)来确保正确编译Java文件(使用
launch.json
code)

首先,添加编译java任务。在以下代码中,
bin
是与
${workspaceFolder}
相关的类路径(
cwd
默认为工作区文件夹)。如果文件位于工作区文件夹中,则可以将
bin
替换为
(当前目录)。
${fileDirname}\\*.java
包含当前文件目录中的所有java文件。这在处理包时特别有用。如果您希望只编译当前文件,可以用文件名(例如pacman)替换
*

其次,将
preLaunchTask
参数添加到
launch.json
代码中。它必须与您为任务指定的名称相同(在本例中,我将其命名为“compile java”)。此参数强制在启动代码之前(在运行文件之前)运行给定的任务

{
“版本”:“0.2.0”,
“配置”:[
{
“类型”:“java”,
“名称”:“运行java”,
“请求”:“启动”,
“控制台”:“内部控制台”,
“mainClass”:“pacman.Executor”,

“preLaunchTask”:“compile java”,//我想我找到了解决这个问题的方法。你所需要做的就是在mainClass变量中指向你的.java文件,例如不是“something.Class”,而是“actualFilename.java”。在我这样做之后,VSCode成功地找到了我的主类。

你代码中的类“NAME”应该与文件“NAME”相同您正在其中编写代码。这应该可以解决您的问题

编辑: 我知道这个线程已经有2年多的历史了,但我仍然在添加这个答案,因为很多java新手在VSCode中仍然面临这个问题,所以希望他们能看到这个解决方案,它确实有效

{
    "version": "2.0.0",
    "tasks": [
        {
            "label": "compile java",
            "type": "shell", 
            "command": "javac -d bin -cp bin ${fileDirname}\\*.java",
            "group": "build"
        }
    ]
}
{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "java",
            "name": "run java",
            "request": "launch",
            "console": "internalConsole",
            "mainClass": "pacman.Executor",
            "preLaunchTask": "compile java",  // <--- add the task here
            "classPaths": ["bin"], // optional but try adding if still not working
        }
    ]
}