用于在java代码中查找包命名空间冲突的工具

时间:2008-10-06 17:58:47

标签: java refactoring

我们有许多使用相同和/或类似包名的项目。许多或这些项目将构建其他项目使用的jar文件。我们发现了许多foo.util foo.db和foo.exceptions,其中使用相同的类名导致名称空间冲突。

有没有人知道会搜索一组java代码库并自动查找名称空间冲突和模糊导入的工具?

3 个答案:

答案 0 :(得分:4)

在每个单独的项目中修改名称更简单。

真。

您无需了解所有冲突。您的包名首先应该是唯一的。如果它们不是唯一的,您需要重新考虑如何分配包名称。如果它们“平坦”(foo.thisfoo.that),您需要让它们更高,更具体。

这就是为什么示例总是org.apache.project.component.lower.level.names

您应该com.projectX.foo.thiscom.projectZ.foo.that 阻止重复的可能性。

“但所有重新编译,”你说。无论如何你必须这样做。不要浪费大量时间试图发现确切的,完整的程度。按照你所知道的去做,立即开始修复,然后在你的代码库中逐步修复一件事。

答案 1 :(得分:2)

如果您可以将项目加载到Eclipse中,则“问题”视图将为您提供冲突和模糊导入。还有一个组织导入向导,可以帮助进行任何不必要的导入。

答案 2 :(得分:0)

我同意S.Lott的意见 - 你需要首先了解这种情况是如何发生的,并且让做错的人(即让他们回去修理东西)非常痛苦。现代IDE(Eclipse就是其中之一)使得这种重构变得相当容易。

我唯一不同意的是在你去的时候解决问题。相反,我强烈建议您在此现在上支付技术债务并获得可靠的包裹名称审核。几个小时(这就是它应该采取的一切)这将为您节省噩梦般的调试。

仅供参考 - 在不同的源文件夹(例如)中将同一个包放在同一个包中是完全合法的:

的src / COM /我/项目 测试/ COM /我/项目

尝试区分上述有效的文件夹结构,以及您所处理的情况在任何自动化方式下都会非常困难。