我们有许多使用相同和/或类似包名的项目。许多或这些项目将构建其他项目使用的jar文件。我们发现了许多foo.util foo.db和foo.exceptions,其中使用相同的类名导致名称空间冲突。
有没有人知道会搜索一组java代码库并自动查找名称空间冲突和模糊导入的工具?
答案 0 :(得分:4)
在每个单独的项目中修改名称更简单。
真。
您无需了解所有冲突。您的包名首先应该是唯一的。如果它们不是唯一的,您需要重新考虑如何分配包名称。如果它们“平坦”(foo.this
和foo.that
),您需要让它们更高,更具体。
这就是为什么示例总是org.apache.project.component.lower.level.names
。
您应该com.projectX.foo.this
和com.projectZ.foo.that
阻止重复的可能性。
“但所有重新编译,”你说。无论如何你必须这样做。不要浪费大量时间试图发现确切的,完整的程度。按照你所知道的去做,立即开始修复,然后在你的代码库中逐步修复一件事。
答案 1 :(得分:2)
如果您可以将项目加载到Eclipse中,则“问题”视图将为您提供冲突和模糊导入。还有一个组织导入向导,可以帮助进行任何不必要的导入。
答案 2 :(得分:0)
我同意S.Lott的意见 - 你需要首先了解这种情况是如何发生的,并且让做错的人(即让他们回去修理东西)非常痛苦。现代IDE(Eclipse就是其中之一)使得这种重构变得相当容易。
我唯一不同意的是在你去的时候解决问题。相反,我强烈建议您在此现在上支付技术债务并获得可靠的包裹名称审核。几个小时(这就是它应该采取的一切)这将为您节省噩梦般的调试。
仅供参考 - 在不同的源文件夹(例如)中将同一个包放在同一个包中是完全合法的:
的src / COM /我/项目 测试/ COM /我/项目
尝试区分上述有效的文件夹结构,以及您所处理的情况在任何自动化方式下都会非常困难。