如何*确实*确保我的Java包名称是唯一的?

时间:2012-05-22 13:50:57

标签: java package conflict

避免Java中包名冲突的标准方法是使用反向域约定com.[mycompany].[rest-of-the-package-name]。这非常有效......如果拥有域[mycompany] .com。

但是,有几个开发人员(或学生):

  • 不要(或者不能承担)拥有域名
  • 仍然想起一些包装名称,希望它们是独一无二的。

这就引入了包冲突的范围。

此外,假设我拥有[mycompany] .com。是什么阻止开发人员创建一个与我的包前缀相同并分发它的库? AFAIK,对包名没有法律约束力("你必须拥有你在Java包中使用过的域")。更不用说对开发人员的这一行动可能不是故意的(在我们命名我们的软件包之前,我们中有多少人在网上寻找不存在的域名?)。

更进一步,即使我拥有一个域名,它可能适合也可能不适合用作包名(我的域名可能包含连字符,或者它可能很长,尽管它是一个合法的包名,它仍然可能使它变得不切实际。)

所以我的问题是:我如何真正使我的Java包名称独一无二?

2 个答案:

答案 0 :(得分:15)

您不能绝对保证您的包名称将是全球唯一的。正如您所提到的,没有什么可以阻止其他人使用相同的包名称,无论谁拥有包名称所基于的任何东西。没有正在使用的软件包名称的权威索引。

答案 1 :(得分:7)

我看到你问题的两个答案:

  • 让您的学生项目成为SourceForge项目并命名包net.sf.myproject(或使用任何类似的免费主机,例如GitHub)。这样的包名称​​可能不被其他人使用,但不能保证Matt Hurne指出
  • 除此之外,如果您不能或不想购买域名,您的程序不太可能被广大受众使用,您可以随意命名您的程序包