为什么 vscode 无法识别 import org.junit?

Bre*_*uld 2 java junit importerror maven visual-studio-code

我正在使用 maven 在 Visual Studio 代码中开发一个 java 项目,目前正在尝试编写一个测试类。我已将 junit 作为依赖项添加到我的 pom.xml 文件中:

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
</dependency>
Run Code Online (Sandbox Code Playgroud)

目前,我的类是这样的:(Board 类没有问题,getOne() 返回 1)

import org.junit.Test;

public class BoardTest {
    private Board board = new Board();

    @Test
    public void testOne() {
        assert(board.getOne() == 1);
    }
}
Run Code Online (Sandbox Code Playgroud)

最初,当我打开文件时,一切都很好,但是一旦我保存,vscode 就会生成 2 条错误消息,当我关闭并重新打开文件时,这两条错误消息都会消失,但在保存后再次出现:

  1. “导入 org.junit 无法解析”

  2. “测试无法解析为类型”

有趣的是,即使存在这些错误,vscode 也会为我提供有关导入和 @Test 标志的鼠标悬停信息,就好像它实际上已经正确解决了它们一样。我从命令行运行mvn install,vscode 甚至在项目的 java 依赖项部分列出了 junit-4.12.jar。

运行会mvn test产生预期的结果(测试通过),之后mvn package,从命令行运行项目的 .jar 文件运行项目没有问题。每当我尝试从 vscode 运行项目时,它都会通知我构建失败,即使当前不存在错误消息(即在我打开测试类之后但在我保存之前)。如果我告诉 vscode 继续,该项目再次运行良好。尝试从 vscode 运行测试的工作方式相同(我收到一条错误消息,但在我告诉 vscode 继续进行后,测试照常通过)。

关于什么可能导致这种情况的任何想法?以下是我正在使用的所有内容的当前版本:

JDK:openjdk v11.0.7

vscode:v1.45.1

Maven:Apache Maven v3.6.3

jha*_*805 5

试试这个 VS Code 命令...

View -> Command Palette -> Java: Clean Java Language Server Workspace
Run Code Online (Sandbox Code Playgroud)

此命令解决了我的类似问题,即 VS Code 无法识别import org.json.*Gradle 项目的 .java 文件,即使 Gradle 可以成功构建和运行。这个 VS Code 命令与 IntelliJ 的类似File -> Invalidate Caches and Restart,因为它强制刷新 IDE 的可用令牌和标识符缓存。

旁注:

  • 确保至少运行一次您的构建工具(例如gradle buildmvn install),以便将所需的包下载到您的本地计算机,以便 VS Code 可以找到它们。
  • 此命令附带来自 Red Hat (redhat.java) 的 VS Code 扩展“Java 语言支持”,它捆绑在 Microsoft 的“Java 扩展包”(vscjava.vscode-java-pack) 中。您必须安装这些扩展之一才能使用它。

  • 2023 年仍然是一个问题,这仍然是可行的解决方案:) (3认同)