我的合法域名不是合法的Java包名称

时间:2012-10-18 00:15:49

标签: java package

我的域名是3DTOPO.com。显然,java不允许包域名以数字开头。

为什么Java反向域名遵循与域名相同的规则呢?我真的不想把我的包命名为com.threedtopo ....

对于不是我的域名的初学者!其他任何人都可以自由注册并使用该域名。此外,它非常尴尬,而不是我的业务名称。

有没有人有包名称建议?

4 个答案:

答案 0 :(得分:11)

我认为您的意思是Java不允许包名以数字开头。

一个常见的替代方案是在下面添加一个下划线,_3dtopo。

答案 1 :(得分:9)

Sun / Oracle在Java教程的Naming a Package部分专门解决了这个问题:

  

在某些情况下,互联网域名可能不是有效的包名。如果域名包含连字符或其他特殊字符,如果包名称以数字或其他非法用作Java名称开头的字符开头,或者包名称包含保留的Java关键字,则会发生这种情况,例如“int”。在这种情况下,建议的约定是添加下划线。

他们继续举几个例子,在这种情况下相关的一个例子是域123name.example.com成为包com.example._123name

答案 2 :(得分:5)

根据RFC 1912

  

主机名标签中的允许字符仅为ASCII      字母,数字和“ - ”字符。标签可能不是全部      数字,但可能有一个前导数字(例如,3com.com)。标签必须      结束并仅以字母或数字开头。参见[RFC 1035]和[RFC      1123。 (标签最初在[RFC 1035]中受限于开始      一封信,还有一些老主人据说还有问题      放松[RFC 1123]。)注意有一些互联网      违反此规则的主机名(411.org,1776.com)。存在      [RFC 1033]允许标签中的下划线,[RFC 1033]除外      仅供参考,并未定义标准。有。在      目前拒绝的至少一种流行的TCP / IP实现      与以下划线命名的主机交谈。必须指出的是      [1035]中的语言是这些规则是自愿的 - 它们      那些希望尽量减少问题的人。请注意      Internet主机名的规则也适用于使用的主机和地址      在SMTP中(参见RFC 821)。

因此,在1989年RFC 1123之前,域名前面的允许数字才开始。

值得注意的是,他们在1990年开始编写Java。那时以数字开头的域可能并不常见,所以包名似乎与主机名类似。

包名称不必直接对应于域名。对我来说,域名是暂时的 - 它们可以买卖。软件包名称的持续时间可能比域名长。

对于它的价值,3com通过购买另一个域来解决它。 ;-)他们使用com.palm.webos作为某些软件。

答案 3 :(得分:5)

  

为什么Java反向域名遵循与域名相同的规则呢?

由于:

  1. 它不是'反向域名',而是Java包名。
  2. 它由Java标识符组成,不允许使用前导数字。