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