没有自己域的项目的Java包命名空间

没有自己域的项目的Java包命名空间,java,namespaces,Java,Namespaces,对于如何为没有自己域的开源项目命名包名称空间,是否有一个通用的经验法则 名称空间应该是唯一的,所以选择域来处理这个问题,但最终这并不重要,只要它们是唯一的 现在,如果我有一个只托管在github上的项目,可以接受吗 com.github.username.projectname 还是因为我使用的是一个我并不真正拥有的域名而不赞成这样做?有许多com.google.code和项目在包名中使用sourceforge,因此名称空间有很多先例。没关系。一般来说,只需选择一些“可能”独特的、特定于项目的

对于如何为没有自己域的开源项目命名包名称空间,是否有一个通用的经验法则

名称空间应该是唯一的,所以选择域来处理这个问题,但最终这并不重要,只要它们是唯一的

现在,如果我有一个只托管在github上的项目,可以接受吗

com.github.username.projectname

还是因为我使用的是一个我并不真正拥有的域名而不赞成这样做?

有许多com.google.code和项目在包名中使用sourceforge,因此名称空间有很多先例。

没关系。一般来说,只需选择一些“可能”独特的、特定于项目的东西


包通常只有在它们是为消费而设计的库时才会发生冲突;如果这些包仅用于项目内部,那么它就不那么重要了。

在您的示例中
com.github
与您的代码没有直接关系。此代码存储在何处(aka.hosted)无关紧要,将来可能会更改。因此,我建议使用一个纯项目特定的名称,如

org.projectname
甚至

projectname
因为包名不需要是域名


哦,顺便说一句:您将发现几乎所有与命名约定有关的内容都具有优先权,而不仅仅是Java包名称。但从根本上说:在历史上,你也可以找到每一种谋杀的优先权。这是否只是因为别人以前做过,才让人接受呢?我不这么认为。

当谷歌倒闭,所有这些项目都转移到其他地方时,这将是一件有趣的事。。。就像Lycos一样,@Perception不会真的破坏任何东西。不像,比如说,将所有Sun站点移动到Oracle,使规范和论坛帖子几乎找不到。我相信,更担心的是使用别人的域名,而不是命名冲突。@G_H这就是答案的第一句话。不要认为这会是个问题。Apache和Codehaus项目似乎就是这样做的。您的包名称不仅应该是唯一的,而且应该是您自己的。假设你有一封电子邮件name@email.com您可以将该包用作com.email.name,因为如果发生任何冲突,您将获胜,因为您拥有该电子邮件。简而言之,您的包名称应该是唯一的,并且您应该能够证明您拥有itI,这可能会避免org.projectname;问题的前提是“没有自己的域名”。由于“projectname.org”不属于该项目,这似乎具有相当大的误导性,可能最终成为一个令人不快的法律战场,或者可能造成混乱。假设其他人拥有该域名projectname.org,他可以合法地与您进行斗争