2

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

有谁知道一个工具可以搜索一组 java 代码库并自动查找名称空间冲突和模棱两可的导入?

4

3 回答 3

4

在每个单独的项目中修复您的名字更简单。

真的。

你不需要知道所有的冲突。你的包名首先应该是唯一的。如果它们不是唯一的,您需要重新考虑如何分配包名称。如果它们是“扁平的”(foo.thisfoo.that),则需要使它们更高且更具体。

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

你应该有com.projectX.foo.this并且com.projectZ.foo.that防止重复的可能性。

“但是所有的重新编译,”你说。无论如何,你必须这样做。不要浪费大量时间试图发现准确、完整的范围。使用你所知道的,现在就开始修复事情,并通过你的代码库一次修复一件事。

于 2008-10-06T18:23:19.987 回答
2

如果您可以将项目加载到 Eclipse 中,Problems 视图将为您提供冲突和不明确的导入。还有一个组织导入向导,可以帮助处理任何不必要的导入。

于 2008-10-06T18:00:30.393 回答
0

我同意 S.Lott 的观点——你首先需要弄清楚这件事是如何发生的,并让做错事的人感到非常痛苦(即让他们回去修复问题)。现代 IDE(Eclipse 就是其中之一)使这种重构变得相当容易。

我唯一不同意的是在你去的时候修理东西。相反,我强烈建议您现在通过可靠的包名称审查来偿还您的技术债务。几个小时(这实际上就是它应该花费的全部时间)将让您免去调试的噩梦。

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

src/com/my/project 测试/com/my/project

试图区分上述有效的文件夹结构,以及您即将遇到的情况,以任何自动化方式都将非常困难。

于 2008-10-07T03:28:35.207 回答