【发布时间】:2021-02-24 10:14:57
【问题描述】:
我在一些测试中遇到了 NoClassDefFoundError 问题,从 IntelliJ 启动。为了修复这种情况,我不得不在项目的许多 pom 中进行一些更改 - 添加新包并排除一些旧包以避免它们的重叠。另外,我用不同的版本恢复了这种情况。但情况并没有好转。再一次,在 pom 中声明的某些包没有找到它应该在的位置。
我通过
刷新了maven仓库mvn -e clean install -U
,正如https://stackoverflow.com/a/9697970/715269 中所建议的那样 - 如此古老且被赞成的答案,它肯定看起来像圣诞老人。
问题没有改变。
我输出了 maven 地图。它是正确的,它包含了所有需要的东西。
我查看了该项目的External Libraries 列表。这是旧的未更正的重叠 jar 列表,具有相同的名称和不同的版本,并且没有我刚才添加的好包,并且在 maven 树输出中很明显!
已经倒霉了,
我在 IntelliJ 中重新导入了包
经过:Ctrl+Shift+A, Reimport All Maven Projects.
喂!库列表已修复。而在 subj 中提到的问题就消失了。
问题是:它怎么可能发生,同一个项目对所有东西都有那么大的 pom,但是在 maven 和 IntelliJ 中以不同的方式启动包?
我知道“将 IDE 构建委托给 Maven”这一功能。我一直把它关掉。但我不是在谈论用于构建的不同软件。无论它们是否不同,它们都应该取决于实际的 pom。虽然 maven,如果从自动构建中关闭,则不会知道 pom 的变化,而 IntelliJ 知道它们。它可以有 pom 或 maven 的罐子——它有道理,但它只是有一些旧垃圾。在这种结构下是否有一些深刻的思考?
【问题讨论】:
标签: maven intellij-idea build package pom.xml