与从Java中的默认包更改相关的风险?

时间:2009-10-29 15:25:56

标签: java eclipse jar refactoring

我有一个现有的代码库,根本没有打包。

代码库是所有旨在扩展/增强第三方程序功能的次要Java程序。当前进程是每个类一个jar,每个文件一个类,没有包。

我想打破代码库,所以每个jar文件也是一个包;这简化了我在Eclipse中的jar过程。

我需要注意与此相关的风险吗?

4 个答案:

答案 0 :(得分:4)

唯一的风险是明确的(或更可能是隐式的)包定义过时。

例如,所有Java文件,因为它们位于同一个包中,所以不需要相互导入。迁移后,他们要么需要在其他包中使用完全限定的类名,要么导入它们。

类似地,在出现类名的任何地方(例如,在Spring配置文件中,可能是属性文件中命名类),几乎肯定需要将其更新为完全限定名称(例如“com.company.package.MyClass”) “而不只是”MyClass“)。

后者可能是最麻烦的;只要你有一个良好的构建过程并确保你从头开始构建,任何Java错误应该在编译阶段被捕获(除非你使用奇怪的东西,如Class.forName("MyClass")你的来源)。但是,配置文件问题将在运行时显示,如果没有整理出来 - 然后,通常在它们即将被使用时。如果一个很少使用的功能有一个Spring配置引用你的一个类而你忘记更改它,你将无法找到它,直到它失败。

从好的方面来看 - 不错的IDE会有一个“重命名”或“更改包”重构,它应该能够在文本文件中找到你的类名的出现。

答案 1 :(得分:0)

我不确定我是否完全理解你要做的事情,但是如果你想为今天不存在的类创建包,那么请注意,如果某些方法可能不再可见,它们受到包装保护。

答案 2 :(得分:0)

将所有类放入一个包(包括任何属性文件等)并从该包创建一个jar,然后您可以通过执行项目构建选项并将其包含在eclipse项目中始终包含该jar文件一个外部jar文件,然后只需将您需要的特定类/类导入到项目中即可。

只要将这些类所需的所有资源都包含在生成的包/ jar中,它们就会像以前一样工作,但在其他项目中使用它们会容易得多。

答案 3 :(得分:0)

当您将类移动到另一个包或使用Eclipse重命名包时,Eclipse也足够智能地查找和更改所有引用。一次全部。试一试。