我的域名是3DTOPO.com。显然,java不允许打包域名以数字开头。
为什么Java反向域名不遵循与域名相同的规则?我真的不想将我的包命名为com.threedtopo...
对于初学者,这不是我的域名!其他任何人都可以自由注册和使用该域名。此外,这是非常尴尬的,也不是我的业务名称。
有没有人有关于包名的建议?
发布于 2012-10-18 08:38:17
根据RFC 1912的说法,
主机名标签中允许的字符仅为ASCII码字母、数字和‘-’字符。标签可以不是所有的数字,但可以有一个前导数字(例如,3com.com)。标签必须以字母或数字结尾和开头。请参阅RFC 1035和RFC 1123。(在RFC 1035中,标签最初被限制为以字母开头,据报道,一些较旧的主机在RFC 1123中仍然存在问题。)注意:有些Internet主机名违反了此规则(411.org,1776.com)。RFC 1033中允许标签中存在下划线,但RFC 1033仅用于提供信息,并且未定义标准。至少有一个流行的TCP/IP实现当前拒绝与名为下划线的主机通信。必须注意的是,1035中的语言是这样的,这些规则是自愿的--它们是为那些希望最小化问题的人准备的。请注意,Internet主机名的规则也适用于SMTP中使用的主机和地址(请参阅RFC 821)。
因此,域名前面的允许数字直到1989年的RFC 1123才开始。
值得注意的是,他们在1990年开始编写Java。到那时,以数字开头的域名可能并不常见,因此软件包名称似乎类似于主机名。
包名不必直接对应域名。对我来说,域名是暂时的--它们可以被买卖。包名的持续时间可能比域名长得多。
无论如何,3com通过购买另一个域名解决了这个问题。;-)他们在一些软件中使用com.palm.webos。
发布于 2012-10-18 08:18:02
我想你的意思是Java不允许包名以数字开头。
一种常见的替代方法是在其前面加上下划线_3dtopo。
发布于 2014-02-21 07:18:11
Sun/Oracle在Java教程的Naming a Package部分专门解决了这个问题:
在某些情况下,internet域名可能不是有效的包名。如果域名包含连字符或其他特殊字符,如果包名以非法用作Java名称开头的数字或其他字符开头,或者如果包名包含保留的Java关键字,如"int“,则会发生这种情况。在这种情况下,建议的约定是添加下划线。
他们接着给出了几个示例,在这种情况下,相关的示例是成为包com.example._123name的域123name.example.com。
https://stackoverflow.com/questions/12945365
复制相似问题