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

Jes*_*ock 7 java package

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

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

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

有人有包名称建议吗?

Dav*_*ton 11

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

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

  • Java不允许*任何符号名称*以数字开头. (3认同)
  • @JeshuaLacock解析/ lexing简化/规范化.此外,当Java被发明时,域名并不多.在关于Java的所有抱怨中,这在我的列表中相当低. (3认同)

ctr*_*den 10

Sun/Oracle在Java教程的命名包部分中专门解决了这个问题:

在某些情况下,互联网域名可能不是有效的包名.如果域名包含连字符或其他特殊字符可能出现这种情况,如果包的名称以数字开头或其它字符是非法的,作为一个Java名称的开头使用,或者如果包名称包含保留的Java关键字,例如"int".在这种情况下,建议的约定是添加下划线.

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


mpo*_*llo 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 一些软件.


use*_*421 5

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

因为:

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