【问题标题】:Why does vscode not recognize the import org.junit?为什么 vscode 无法识别导入的 org.junit?
【发布时间】:2020-05-28 22:16:01
【问题描述】:

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

<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.12</version>
        <scope>test</scope>
</dependency>

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

import org.junit.Test;

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

    @Test
    public void testOne() {
        assert(board.getOne() == 1);
    }
}

最初,当我打开文件时,一切都很好,但是当我保存时,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

【问题讨论】:

  • 您将 junit 导入为 scope=test。这是正确的,但意味着它只会在 src/test/* 目录中可见。您的 BoardTest 文件在哪里?
  • 另外,错误信息是什么?
  • 我假设您的意思是我尝试运行测试时的那个。右下角的标准弹出窗口显示“构建失败,您要继续吗?”通过忽略它,我的意思是我单击此弹出窗口上的继续选项。 BoardTest 类位于 src/test/java/display 中。 display 只是它的包名
  • 检查 maven .m2/repository 文件夹中是否有 junit-4.12.jar。如果不尝试运行'mvn -B verify'
  • 这个问题在eclipse上消失了,更多的证据表明这是vscode的问题

标签: java maven visual-studio-code junit importerror


【解决方案1】:

试试这个 VS Code 命令...

View -> Command Palette -> Java: Clean Java Language Server Workspace

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

旁注:

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

【讨论】:

  • 很抱歉花了这么长时间才将其标记为已接受!我已经切换到在这个项目中使用 eclipse,但是我确实在 vscode 中再次打开它来检查你的解决方案,它解决了这个问题。谢谢!
【解决方案2】:

vscode设置中设置maven用户settings.xml路径,运行上述命令View->Command Palette->Java: Clean Java Language Server Workspace并重新启动vscode帮助我解决了这个问题。

【讨论】:

    猜你喜欢
    • 2021-04-27
    • 2021-09-11
    • 1970-01-01
    • 2022-06-14
    • 2021-05-08
    • 2015-06-21
    • 1970-01-01
    • 2013-02-12
    • 1970-01-01
    相关资源
    最近更新 更多