首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我的合法域名不是合法的Java包名称

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

Stack Overflow用户
提问于 2012-10-18 08:15:49
回答 4查看 3.4K关注 0票数 7

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

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

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

有没有人有关于包名的建议?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 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

票数 5
EN

Stack Overflow用户

发布于 2012-10-18 08:18:02

我想你的意思是Java不允许包名以数字开头。

一种常见的替代方法是在其前面加上下划线_3dtopo。

票数 11
EN

Stack Overflow用户

发布于 2014-02-21 07:18:11

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

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

他们接着给出了几个示例,在这种情况下,相关的示例是成为包com.example._123name的域123name.example.com

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12945365

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档