将模块命名为顶级包是应该的,而不是必须的。例如,参见 JSL 6.1。
模块的名称应与其主要导出包的名称相对应。如果一个模块没有这样的包,或者由于遗留原因,它必须有一个与其导出的包之一不对应的名称,那么它的名称仍应以其作者所在的 Internet 域的反向形式开头联系。
我认为 Windows 7 是一个遗留原因(MAX_PATH = 260 个字符)。解决方法:用于subst
为文件夹分配驱动器号或更新到 Windows 10,它有 32,767 个字符的选择加入。
在 Monaco 13 中呈现的包含 260 个字符的包名称超出了我的 23 英寸显示器的宽度 20 个字符。我不应该水平滚动来阅读模块名称,这是常识。请注意,在 JDK 9(+20,000 个类)中,最长的模块名称是 32 个字符:
for file in $(/usr/libexec/java_home -v 9)/jmods/*; do echo -n `basename "$file"` | wc -m; done
甲骨文甚至不遵守规则。如果你想导入java.util.logging.Logger
你导入java.logging
,而不是java.util.logging
. 不,java.logging 它不是主包,它是 java.util.logging:
$ cd $(/usr/libexec/java_home -v 9)/jmods/
$ jar -tf java.logging.jmod
classes/module-info.class
classes/java/util/logging/ConsoleHandler.class
classes/java/util/logging/ErrorManager.class
classes/java/util/logging/FileHandler$1.class
classes/java/util/logging/FileHandler$InitializationErrorManager.class
...