【问题标题】:Problems running a java project using vscode使用 vscode 运行 java 项目的问题
【发布时间】:2018-09-01 12:53:53
【问题描述】:

我下载了一个在 eclipse/intelliJ 等中运行良好的现有项目。我想让它在 Visual Studio 代码中运行。 我已经下载了 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 方法中使用的某些类中。这个错误似乎刚刚消失了,我不知道我是否离解决问题更远或更接近,我无法复制这个错误。

我的 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 或类似的东西 - 使用 redhat java 插件时从 vscode 中构建项目是否有必要?

我希望有人可以帮助我解决我的困惑或知道问题可能是什么。

提前致谢。

【问题讨论】:

    标签: java visual-studio-code


    【解决方案1】:

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

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

    【讨论】:

    • 我很难理解你的答案。 launch.json 文件有 3 个地方有“名称”
    【解决方案2】:

    我不确定到底是什么问题,但您可以通过向工作场所添加任务(通过创建 tasks.json 文件并将其放入您的 .vscode 文件夹)来确保正确编译 Java 文件在运行程序之前启动(使用launch.json 代码)。

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

    {
        "version": "2.0.0",
        "tasks": [
            {
                "label": "compile java",
                "type": "shell", 
                "command": "javac -d bin -cp bin ${fileDirname}\\*.java",
                "group": "build"
            }
        ]
    }
    

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

    {
        "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
            }
        ]
    }
    

    我不确定这是否会解决您的问题,但我希望它会有所帮助。

    您可以参考一些资源以获取更多信息:

    【讨论】:

      【解决方案3】:

      我想我找到了解决这个问题的方法。您需要做的就是在您的 mainClass 变量中指向您的 .java 文件,例如不是“something.Class”而是“actualFilename.java”。完成此 VSCode 后,我成功找到了我的主类。

      【讨论】:

        猜你喜欢
        • 2021-07-13
        • 1970-01-01
        • 1970-01-01
        • 2022-08-18
        • 2022-11-01
        • 2018-05-24
        • 2011-07-17
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多