避免Java中包名冲突的标准方法是使用反向域约定com.[mycompany].[rest-of-the-package-name]
。这非常有效......如果拥有域[mycompany] .com。
但是,有几个开发人员(或学生):
这就引入了包冲突的范围。
此外,假设我拥有[mycompany] .com。是什么阻止开发人员创建一个与我的包前缀相同并分发它的库? AFAIK,对包名没有法律约束力("你必须拥有你在Java包中使用过的域")。更不用说对开发人员的这一行动可能不是故意的(在我们命名我们的软件包之前,我们中有多少人在网上寻找不存在的域名?)。
更进一步,即使我拥有一个域名,它可能适合也可能不适合用作包名(我的域名可能包含连字符,或者它可能很长,尽管它是一个合法的包名,它仍然可能使它变得不切实际。)
所以我的问题是:我如何真正使我的Java包名称独一无二?
答案 0 :(得分:15)
您不能绝对保证您的包名称将是全球唯一的。正如您所提到的,没有什么可以阻止其他人使用相同的包名称,无论谁拥有包名称所基于的任何东西。没有正在使用的软件包名称的权威索引。
答案 1 :(得分:7)
我看到你问题的两个答案:
net.sf.myproject
(或使用任何类似的免费主机,例如GitHub)。这样的包名称可能不被其他人使用,但不能保证Matt Hurne指出