通常,在 maven 刷新后,项目的单元测试无法找到它在 module-info.java 中声明自己的模块。修复 IDE,删除 .idea

Often, after a maven refresh, unit testing of a project cannot find the module it declared itself in its module-info.java. Repair IDE, delete .idea

提问人:Marc Le Bihan 提问时间:11/17/2023 最后编辑:Marc Le Bihan 更新时间:11/17/2023 访问量:20

问:

我的项目列表中的第一个模块有十个单元测试和一个包含以下内容:module-info.java

module fr.ecoemploi.domain.utils {
   requires org.slf4j;
   requires org.apache.commons.lang3;

   exports fr.ecoemploi.domain.utils.objets;
   exports fr.ecoemploi.domain.utils.autocontrole;
}

从命令行中编译并成功测试。mvn clean install


根据运气,当我刷新整个 maven 项目时,项目及其测试也在编译,并且整个应用程序也是可构建和可测试的 IntelliJ 2023.2.5

从 IDE 启动的测试会立即停止,并显示以下错误:

Error occurred during initialization of boot layer
java.lang.module.FindException: Module fr.ecoemploi.domain.utils not found

并且尝试重新生成所有应用程序的生成项目或重新生成项目将失败,并显示以下消息:

module not found: fr.ecoemploi.domain.utils
module not found: org.slf4j
module not found: org.apache.commons.lang3
module not found: io.swagger.v3.oas.annotations
module not found: java.validation

但是,如果我通过右键单击其上下文菜单仅重建该模块,则构建将成功,单元测试也会成功。

因为我无法通过 IntelliJ 构建应用程序的其余部分,所以我无法再对其进行测试,我必须切换到命令行才能使用 Maven 执行构建。


当我偶然遇到这个问题时,目前,我的解决方法是尝试修复IDE,重新启动它,有时必须删除文件夹(但这会导致我丢失所有个人设置),并且一次,IntelliJ重新开始理解整个项目再次很好地理解。.idea

但它很长。很长。每次发生这种麻烦时,我通常要花 1 小时 30 分,我想找到一种方法在它发生时快速修复它。

Java Maven IntelliJ-idea 模块

评论

0赞 Basil Bourque 11/17/2023
什么版本的 IntelliJ?
0赞 Marc Le Bihan 11/17/2023
2023.2.5我编辑了我的帖子。
0赞 sakura-bloom 11/17/2023
有时当我切换到不同的 git 分支时会出现此错误 - 然后整个项目就坏了。我的解决方法是删除所有内容和删除目录的组合。它有效,但需要很长时间。在IDEA中使缓存失效对我没有任何作用。我怀疑这与 IDEA (?) 的内存管理有关。~/.m2/repository.idea
0赞 Marc Le Bihan 11/17/2023
在过去的几个月里,IntelliJ 的状况很糟糕。我什至发现 Yoututbe Java 视频在他们的演示中不得不提到它!这表明我们并不孤单。我每天都祈祷 IDEA 在一段时间内停止添加新功能,以坚持纠正错误。如果我不单击我的 Maven 项目更改时出现的“M”图标,而是转到 Maven 窗口中要求重新加载所有 Maven 项目,我的问题似乎往往会得到解决

答:

0赞 romanv-jb 11/20/2023 #1

这里的问题似乎源于 IDEA 使用它自己的构建系统来提供它提供的某些选项(例如,“构建”菜单中的选项基于原生构建系统),即使所讨论的项目是基于 Maven 的。

Native Build System 尝试遵循 Maven 约定,但可能存在差异,这反过来又可能导致您描述的问题。

对于基于 Maven 的项目,最好使用 Maven 工具窗口中的选项(以及相应的运行/调试配置)。您还可以启用“将 IDE 生成/运行操作委托给 Maven”。

提交附加了再版项目的 YouTrack 问题可能是个好主意,以便可以对此进行全面调查和解决。

评论

0赞 Marc Le Bihan 11/20/2023
问题是,根据我的经验,您可以将构建操作委托给 Maven,然后构建成功,但是当您要求运行测试时,它会再次执行“它自己的”构建过程并失败。但目前我认为是“刷新 maven 项目”功能出了问题。如果我完全重新加载 maven 项目。它会成功的。