Java 无法解析符号';断言'<;——尝试在IntelliJ中使用AssertJ时出现错误消息

Java 无法解析符号';断言'<;——尝试在IntelliJ中使用AssertJ时出现错误消息,java,maven,intellij-idea,assertj,Java,Maven,Intellij Idea,Assertj,与其他一些问题类似,我发现IntelligentJ神秘地拒绝识别AssertJ库。我再次提问,因为(a)我尝试了各种建议,(b)我有一个非常简单的例子,任何人都可以自己尝试 在IntelliJ 2018和IntelliJ 2019预发行版中,我使用Maven原型版本1.4创建了一个新项目 。因此,我将POM中1.7的这两行更改为11 11 11 我将此添加到POM中: org.assertj assertj核心 3.11.1 测试 使用IntelliJ中的Maven面板,我执行了一个cle

与其他一些问题类似,我发现IntelligentJ神秘地拒绝识别AssertJ库。我再次提问,因为(a)我尝试了各种建议,(b)我有一个非常简单的例子,任何人都可以自己尝试

在IntelliJ 2018和IntelliJ 2019预发行版中,我使用Maven原型版本1.4创建了一个新项目

。因此,我将POM中
1.7
的这两行更改为
11

11
11
我将此添加到POM中:


org.assertj
assertj核心
3.11.1
测试
使用IntelliJ中的Maven面板,我执行了一个
clean
install

看起来不错。我验证了
org.assertj:assertj核心:3.11.1
库是否出现在IntelliJ的项目面板中。应用程序运行时,在IntelliJ的控制台上显示Hello World

App.java
文件中,我添加了这个
import
语句

import static org.assertj.core.api.Assertions.*;
IDE编辑器中报告的错误:

无法解析符号“断言”

有些人建议使用损坏的Maven缓存。所以我退出了IntelliJ,并删除了主文件夹中的
.m2
文件夹。我在IntelliJ中重新打开我的项目,并重新执行Maven
clean
&
install
。很多东西正在下载,所以我知道Maven缓存确实正在重新创建

然而,我的编辑器中仍然存在错误,
无法解析符号“断言”

没有涉及Java模块,因为尚未为此更新
快速启动
原型。

删除
测试
此主题在AssertJ问题跟踪程序上的一篇文章中讨论

当Maven依赖项包含值为
test
scope
元素时,这意味着您不能在特定于测试的源程序包/文件夹之外使用该库

如果您试图从示例项目的
src/main/java/…
文件夹层次结构中的代码调用AssertJ,您将看到该错误。如果您从
src/test/java…
调用AssertJ,您将看到成功

要在
src/main/java/..
文件夹层次结构中启用AssertJ,请删除POM依赖项中的
scope
元素。因此:


org.assertj
assertj核心
3.11.1
测试
…变成这样:


org.assertj
assertj核心
3.11.1

如果您有一个模块化项目,不要忘记添加
requires org.assertj.core
到您的
模块信息
文件。@jornverne谢谢,但没有Java模块。Maven
quickstart
原型尚未为模块更新。我在问题中作了澄清。发布之后,我找到了解决方案:依赖项上的
test
范围仅限制对测试类的访问。删除
test
scope会打开AssertJ,在你的主应用程序中使用。你真是个天才!谢谢