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

问题描述 投票:0回答:3

我正在使用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

java maven visual-studio-code junit importerror
3个回答
31
投票
尝试这个 VS Code 命令...

View -> Command Palette -> Java: Clean Java Language Server Workspace
此命令解决了我的类似问题,即 VS Code 无法识别 Gradle 项目的 .java 文件中的 

import org.json.*

,即使 Gradle 可以成功构建并运行。此 VS Code 命令与 IntelliJ 的 
File -> Invalidate Caches and Restart
 类似,因为它强制刷新 IDE 的可用令牌和标识符的缓存。

旁注:

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

0
投票

maven

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


0
投票
我已经完成了所有 Java 服务器清理,但仍然得到 '''包org.apache.lucene.analysis.tokenattributes不存在(compiler.err.doesnt.exist)'''

build.gradle: ext.pluginApiVersion = '8.12.2' ext.luceneVersion = '8.11.3' dependencies { implementation "org.apache.lucene:lucene- core:${luceneVersion}" implementation "org.apache.lucene:lucene-analyzers- common:${luceneVersion}" implementation "org.elasticsearch:elasticsearch:${pluginApiVersion}" implementation "org.elasticsearch.plugin:elasticsearch-plugin- api:${pluginApiVersion}" implementation "org.elasticsearch.plugin:elasticsearch-plugin-analysis- api:${pluginApiVersion}" }
    
© www.soinside.com 2019 - 2024. All rights reserved.