网站首页 > java教程 正文
自动模块
为了向后兼容,查找类型的类路径机制仍然可以在Java 9中使用。可以选择将JARs放在类路径,模块路径和两者的组合上。 请注意,可以在模块路径和类路径上放置模块化JARs以及JARs。
当你将一个JAR放在模块路径上时,JAR被视为一个模块,称为自动模块(automatic module)。 被称为自动模块是因为模块信息自动定义的事实得出的,不是通过添加module-info.class文件来显式声明模块。 自动模块有一个名称。 自动模块的名称是什么? 它读取哪些模块以及导出哪些软件包?
自动模块其实也是一个有命名模块。 其模块名称和版本由JAR文件的名称派生,对应以下规则:
删除JAR文件的.jar扩展名。 如果JAR文件名是com.jdojo.intro-1.0.jar,则此步骤将删除.jar扩展名,并通过以下步骤使用com.jdojo.intro-1.0来推导出模块的名称及其版本。
如果名称以连字符后跟至少一个数字(也可后跟一个点),则模块名称将从最后一个连字符之前的名称部分派生。 如果它可以被解析为有效的版本,连字符后面的部分被分配为模块的版本。 在此示例中,模块名称将从com.jdojo.intro派生。 版本将派生为1.0。
名称部分中的每个非字母数字字符都被替换为一个点,并且在所得到的字符串中,用一个点替换两个连续的点。 此外,所有前导和后跟的点都被删除。 在本示例中,我们在名称部分中没有任何非字母数字字符,因此模块名称为com.jdojo.intro。
按顺序应用这些规则可以提供模块名称和模块版本。 在本节结尾处,展示如何使用JAR文件确定自动模块的名称。 下面列出了几个JAR名称,以及派生的自动模块名称和版本。 请注意,该表不显示JAR文件名中的扩展名.jar。
我们来看看表中的三个奇怪的情况,如果你将JAR放在模块路径中,你会收到一个错误。 生成错误的第一个JAR名称是jdojo-logging1.5.0。 让我们应用规则来导出此JAR的自动模块名称:
JAR名称中没有连字符,后面紧跟着一个数字,所以没有模块版本。 整个JAR名称用于导出自动模块名称。
所有非字母数字字符都被替换为一个点。 生成的字符串是jdojo.logging1.5.0。 模块名称的每个部分都必须是有效的Java标识符。 在这种情况下,5和0是模块名称中的两个部分,它们不是有效的Java标识符。 因此,派生模块名称无效。 这是在将此JAR文件添加到模块路径时收到错误的原因。
生成错误的另一个JAR名称是jdojo-trans-api_1.5_spec-1.0.0。 我们来应用规则来推导出这个JAR的自动模块名称:
找到最后一个连字符,之后只有数字和点,并将JAR名称分为两部分:jdojo-trans-api_1.5_spec和1.0.0。 第一部分用于派生模块名称。 第二部分是模块版本。
名称部分中的所有非字母数字字符都将替换为一个点。 生成的字符串是jdojo.trans.api.1.5.spec,它是一个无效的模块名称,因为1和5并且不是有效的Java标识符。 这是在将此JAR文件添加到模块路径时收到错误的原因。
表中的最后一个条目包含一个下划线(-)作为JAR名称。 也就是说,JAR文件被命名为-.jar。 如果应用规则,下划线将被一个点替换,并且该点将被删除,因为它是名称中唯一的字符。 最后一个空字符串,这不是一个有效的模块名称。
猜你喜欢
- 2024-09-11 Java 9最终发布可能会推迟8周,到9月21日
- 2024-09-11 JAVA9模块化详解(一)——模块化的定义
- 2024-09-11 java 9 更新内容整理(java基础知识点整理)
- 2024-09-11 轻松上手Java 9模块化开发核心原则与实践
- 2024-09-11 Java 9 揭秘-模块化系统(二)(java9安装教程)
- 2024-09-11 Java9系列第8篇-Module模块化编程
- 2024-09-11 Java 9揭秘-模块依赖(七)(java9是什么版本)
- 2024-09-11 Java9新特性Jigsaw和Jshell(java9 模块化 系统)
- 2024-09-11 Java9新特性中的模块化到底是什么
- 2024-09-11 甲骨文又在给我们灌鸡汤:JAVA 9的未来是什么样的?
你 发表评论:
欢迎- 最近发表
-
- Java常量定义防暴指南:从"杀马特"到"高富帅"的华丽转身
- Java接口设计原则与实践:优雅编程的艺术
- java 包管理、访问修饰符、static/final关键字
- Java工程师的代码规范与最佳实践:优雅代码的艺术
- 编写一个java程序(编写一个Java程序计算并输出1到n的阶乘)
- Mycat的搭建以及配置与启动(mycat部署)
- Weblogic 安装 -“不是有效的 JDK Java 主目录”解决办法
- SpringBoot打包部署解析:jar包的生成和结构
- 《Servlet》第05节:创建第一个Servlet程序(HelloSevlet)
- 你认为最简单的单例模式,东西还挺多
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)