我正在使用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 条错误消息,当我关闭并重新打开文件时,这两条消息都会消失,但在保存后会再次出现:
“无法解析导入org.junit”
“测试无法解析为类型”
有趣的是,即使存在这些错误,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
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 可以找到它们。
maven
设置中设置
settings.xml
用户
vscode
路径,运行上述命令
View
->
Command Palette
->
Java: Clean Java Language Server Workspace
并重新启动
vscode
帮助我解决了问题。
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}"
}