Intellij Idea 无法解析符号“Assertions”< --尝试在IntelliJ中使用AssertJ时出现错误消息

mmvthczy  于 2023-06-05  发布在  其他
关注(0)|答案(2)|浏览(296)

与其他一些问题类似,我发现IntelliJ神秘地拒绝识别AssertJ库。我再问一次,因为(a)我已经尝试了各种建议,(B)我有一个非常简单的例子,任何人都可以尝试自己。
在IntelliJ 2018和IntelliJ 2019预发布版中,我使用Maven原型maven-archetype-quickstart版本1.4创建了一个新项目。
AssertJ 3 requires Java 8。所以我在POM中将1.7的这两行更改为11

<maven.compiler.source>11</maven.compiler.source>
    <maven.compiler.target>11</maven.compiler.target>

我把这个添加到POM中:

<dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
        <scope>test</scope>
    </dependency>

使用IntelliJ中的 Maven 面板,我执行了cleaninstall
看起来不错。我验证了org.assertj:assertj-core:3.11.1库出现在IntelliJ的 Project 面板中。应用程序运行,IntelliJ中的控制台上出现 Hello World
App.java文件中,我添加了以下import语句。

import static org.assertj.core.api.Assertions.* ;

IDE编辑器中报告的错误:
无法解析符号“Assert”
有些人建议使用损坏的Maven缓存。所以我退出了IntelliJ,并删除了主文件夹中的.m2文件夹。我在IntelliJ中重新打开我的项目,并重新执行Maven cleaninstall。很多东西正在下载,所以我知道Maven缓存确实正在重新创建。
然而,仍然是我的编辑器中的错误,Cannot resolve symbol 'Assertions'
不涉及Java模块,因为quickstart原型尚未更新。

kjthegm6

kjthegm61#

删除<scope>test</scope>

这个主题在AssertJ问题跟踪器的closed ticket # 520中得到了解决。
当一个Maven依赖项携带一个值为testscope元素时,这意味着您不能在特定于测试的源包/文件夹之外使用该库。
如果您试图从示例项目的src/main/java/…文件夹层次结构中的代码调用AssertJ,您将看到该错误。如果从src/test/java…调用AssertJ,您将看到成功。
要在src/main/java/…文件夹层次结构中启用AssertJ,请删除POM依赖项中的scope元素。所以这个:

<dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
        <scope>test</scope>
    </dependency>

变成了这样

<dependency>
        <groupId>org.assertj</groupId>
        <artifactId>assertj-core</artifactId>
        <version>3.11.1</version>
    </dependency>

仅供参考,assertj-core 的当前版本是3.24.2,截至2023-05。

snvhrwxg

snvhrwxg2#

好吧,还有另一个疯狂的情况,将pom.xml中导入的库的版本更改为过时的版本在某种程度上帮助了...(删除<scope>test</scope>没有帮助)
这一切都很好,当添加依赖这个版本的库

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.18.1</version>
</dependency>

what import looks like (lovely) with 3.18.1 version imported
但由于某种原因,它无法看到带有此maven依赖项的assertj:

<dependency>
    <groupId>org.assertj</groupId>
    <artifactId>assertj-core</artifactId>
    <version>3.24.2</version>
</dependency>

what import looks like (bad :c) with newest version imported

相关问题