什么是导致“死亡”的常见原因;“包不存在”;使用Maven构建时,Java单元测试中的错误可能是由重命名类引起的?

什么是导致“死亡”的常见原因;“包不存在”;使用Maven构建时,Java单元测试中的错误可能是由重命名类引起的?,java,unit-testing,maven,junit,surefire,Java,Unit Testing,Maven,Junit,Surefire,在Java中,我在同一目录/包中重命名3个类。重命名后,在src/main中使用Maven 3,一切都很好 然而,我在src/test中的junit测试现在抱怨说,在我重命名那里的类之后,没有任何包存在 我没有对目录结构做任何更改,我三次检查了Java文件中的包名是否正常,目录结构是否正常。有趣的是,我在src/main中更改类名的位置的子目录也出现了这个错误 虽然我无法直接复制/粘贴代码,但下面是我所做更改的一个快速示例: 对于重命名的文件,我做了如下操作: com.companyxyz.pa

在Java中,我在同一目录/包中重命名3个类。重命名后,在src/main中使用Maven 3,一切都很好

然而,我在src/test中的junit测试现在抱怨说,在我重命名那里的类之后,没有任何包存在

我没有对目录结构做任何更改,我三次检查了Java文件中的包名是否正常,目录结构是否正常。有趣的是,我在src/main中更改类名的位置的子目录也出现了这个错误

虽然我无法直接复制/粘贴代码,但下面是我所做更改的一个快速示例:

对于重命名的文件,我做了如下操作:

com.companyxyz.packageabc.MyCurrentClass
致:

再次,我更新了单元测试代码和应用程序代码,以使用新的类名;单元测试的目录结构没有改变,尽管我确实重命名了单元测试以与新的类名对齐。然而,如上所述,单元测试现在正在抱怨:

[ERROR] /myrepopath/src/test/java/com/companyxyz/packageabc/junit/MyNewClassTest.java:[3,33] package com.companyxyz.packageabc does not exist
如上所述,我三次检查了目录结构没有改变,java文件中的包名显示如下:

package com.companyxyz.packageabc
此外,我正在运行之前进行Maven安装:

mvn clean install -U && mvn clean package
如果我将更改恢复到更改类名之前的状态,则一切都会正常生成,不会出现问题

这些信息是否足以让某人为我指出正确的方向,从而找出这个错误的原因

或者,有人知道在Java中重命名一个类时可能出现的常见陷阱吗?该类可能会在单元测试中产生此类问题


任何帮助都将不胜感激。我有很多C++经验,但是对java的比较少,以前没有碰到过这种情况。提前感谢。

对于一些额外的上下文,我退出了所有更改,并尝试在检查点重建一个文件,而不是尝试一次重命名所有文件。这次我没有问题,一切都很好。如果有人能够回答重命名其中一个类时可能出现的错误,以及为什么Java会抱怨包,而不是在没有更改目录/包的情况下找不到符号,那么我仍然很感激。错误消息传递似乎非常糟糕,但在Java方面经验不足,无法确切地知道.Hmm。如果没有项目的副本,这可能很难复制。您是如何进行重命名的,是手动重命名还是使用IDE重命名类?如果是前者,那么您在某个地方错过了重命名。你能为你的项目创建一个要点吗?(显然删除了代码)基于提供的信息,这应该是可行的——我能想象到的最常见的问题是依赖项中的某些内容发生了变化(比如排除?),或者反应堆构建顺序由于某些原因而混乱(包含MyCurrentClass/MyClass的模块是否与包含测试的模块是同一个Maven模块?)(这通常不包含任何敏感数据)关于更改的依赖项,需要在设置中检查的其他问题:您是否使用“*-快照”-版本?可能是您在新版本下进行了重构,但您的测试项目包含旧版本的依赖项信息吗?(假设不是同一模块的单元测试)@Jimmy我认为您的评论可能有助于找到问题的根源,以及我所怀疑的问题。我是手动重命名的,可能在某个地方遗漏了重命名。但是,如果我遗漏了重命名,为什么我会得到一个包不存在错误,而不是找不到符号的错误?如果这可能是一个错误回答是,我接受这个答案就足够了,因为当我“更加小心”的时候,我能够毫无问题地重命名。同样,我仍然不知道为什么错误的重命名会导致包不存在,而不是错误的符号错误。
mvn clean install -U && mvn clean package