Java 9中的自动模块是什么?

一个自动模块 是一个罐子,我们穿上ModulePath进行。我们的应用程序中可以使用许多预先存在的库,并且其中许多尚未模块化。为了方便迁移,我们可以将任何库的jar文件添加到应用程序的模块路径,然后在该jar文件中使用包。它可以隐式地成为一个自动模块,并且可以在模块声明的require指令中指定。jar的文件名成为其模块名称,该名称必须是可以在“ require ”指令中使用的有效Java标识符。

一个自动模块

  • 隐式导出所有包类型,因此任何可以读取自动模块的模块(包括未命名的模块)都必须访问自动模块包中的公共类型

  • 隐式读取(需要)所有其他模块,包括其他自动模块和未命名的模块,因此自动模块可以访问系统其他模块公开的所有公共类型。

%JAVA_HOME%\java --module-path ./libs:./libs-legacy --module app/com.app.Main

自动模块的命名:

  • 扩展名“ .jar ”被删除。

  • 版本号将被删除。例如:mylib-1.2.3-> mylib

  • 非字母数字字符替换为句点。

  • 重复点将替换为单个点,链的起点和终点的点将被删除。