为什么 vscode 无法识别导入 org.junit?
Why does vscode not recognize the import org.junit?
我正在使用 Maven 在 visual studio 代码中开发一个 java 项目,目前正在尝试编写一个测试 class。
我已将 junit 添加为我的 pom.xml 文件的依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
目前,我的 class 看起来像这样:(Board class 和 getOne() returns 没有问题 1)
import org.junit.Test;
public class BoardTest {
private Board board = new Board();
@Test
public void testOne() {
assert(board.getOne() == 1);
}
}
最初,当我打开文件时,一切正常,但是一旦我保存,vscode 会生成 2 条错误消息,当我关闭并重新打开文件时,这两条消息都会消失,但会再次出现保存后:
"The import org.junit cannot be resolved"
"Test cannot be resolved to a type"
有趣的是,即使存在这些错误,vscode 也为我提供了导入和@Test 标志的鼠标悬停信息,就好像它实际上已经正确解决了它们一样。
我有来自命令行的 运行 mvn install
,vscode 甚至在项目的 java 依赖项部分列出了 junit-4.12.jar。
运行 mvn test
产生了预期的结果(测试通过),并且在 mvn package
、运行 从命令行 [=]ning 项目的 .jar 文件之后66=]s 项目没有问题。每当我尝试 运行 来自 vscode 的项目时,它都会通知我构建失败,即使当前不存在错误消息(即在我打开测试后 class 但在我保存之前)。如果我告诉 vscode 继续进行,项目再次 运行 没问题。尝试 运行 来自 vscode 的测试以相同的方式工作(我收到一条错误消息,但在我告诉 vscode 继续进行之后测试正常通过)。
关于什么可能导致这种情况的任何想法?以下是我正在使用的所有内容的当前版本:
JDK: openjdk v11.0.7
vscode: v1.45.1
maven:Apache Maven v3.6.3
试试这个 VS Code 命令...
View -> Command Palette -> Java: Clean Java Language Server Workspace
此命令解决了我在 VS Code 中无法识别 Gradle 项目的 .java 文件中的类似问题,即使 Gradle 会构建并且 运行成功。此 VS Code 命令类似于 IntelliJ 的 File -> Invalidate Caches and Restart
,因为它会强制刷新 IDE 的可用令牌和标识符缓存。
旁注:
- 确保至少有一次 运行 你的构建工具(例如
gradle build
或 mvn install
),以便将所需的包下载到本地计算机,以便 VS Code 可以找到他们。
- 此命令附带来自 Red Hat (redhat.java) 的 VS Code 扩展“Java 的语言支持”,它捆绑在 Microsoft 的“Java 扩展包”中 ( vscjava.vscode-java-包)。您必须安装这些扩展程序之一才能使用它。
在vscode
设置中设置maven
用户settings.xml
路径,运行上面的命令View
-> Command Palette
-> Java: Clean Java Language Server Workspace
并重新启动 vscode
帮助我解决了这个问题。
我正在使用 Maven 在 visual studio 代码中开发一个 java 项目,目前正在尝试编写一个测试 class。 我已将 junit 添加为我的 pom.xml 文件的依赖项:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
目前,我的 class 看起来像这样:(Board class 和 getOne() returns 没有问题 1)
import org.junit.Test;
public class BoardTest {
private Board board = new Board();
@Test
public void testOne() {
assert(board.getOne() == 1);
}
}
最初,当我打开文件时,一切正常,但是一旦我保存,vscode 会生成 2 条错误消息,当我关闭并重新打开文件时,这两条消息都会消失,但会再次出现保存后:
"The import org.junit cannot be resolved"
"Test cannot be resolved to a type"
有趣的是,即使存在这些错误,vscode 也为我提供了导入和@Test 标志的鼠标悬停信息,就好像它实际上已经正确解决了它们一样。
我有来自命令行的 运行 mvn install
,vscode 甚至在项目的 java 依赖项部分列出了 junit-4.12.jar。
运行 mvn test
产生了预期的结果(测试通过),并且在 mvn package
、运行 从命令行 [=]ning 项目的 .jar 文件之后66=]s 项目没有问题。每当我尝试 运行 来自 vscode 的项目时,它都会通知我构建失败,即使当前不存在错误消息(即在我打开测试后 class 但在我保存之前)。如果我告诉 vscode 继续进行,项目再次 运行 没问题。尝试 运行 来自 vscode 的测试以相同的方式工作(我收到一条错误消息,但在我告诉 vscode 继续进行之后测试正常通过)。
关于什么可能导致这种情况的任何想法?以下是我正在使用的所有内容的当前版本:
JDK: openjdk v11.0.7
vscode: v1.45.1
maven:Apache Maven v3.6.3
试试这个 VS Code 命令...
View -> Command Palette -> Java: Clean Java Language Server Workspace
此命令解决了我在 VS Code 中无法识别 Gradle 项目的 .java 文件中的类似问题,即使 Gradle 会构建并且 运行成功。此 VS Code 命令类似于 IntelliJ 的 File -> Invalidate Caches and Restart
,因为它会强制刷新 IDE 的可用令牌和标识符缓存。
旁注:
- 确保至少有一次 运行 你的构建工具(例如
gradle build
或mvn install
),以便将所需的包下载到本地计算机,以便 VS Code 可以找到他们。 - 此命令附带来自 Red Hat (redhat.java) 的 VS Code 扩展“Java 的语言支持”,它捆绑在 Microsoft 的“Java 扩展包”中 ( vscjava.vscode-java-包)。您必须安装这些扩展程序之一才能使用它。
在vscode
设置中设置maven
用户settings.xml
路径,运行上面的命令View
-> Command Palette
-> Java: Clean Java Language Server Workspace
并重新启动 vscode
帮助我解决了这个问题。