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

cur*_*zen 7 java conflict package

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

但是,有几个个体开发者(或学生):

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

仅这就引入了包冲突的范围.

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

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

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

Mat*_*rne 15

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


Luk*_*der 7

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

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