JAVA 11 模块化

开发

推荐使用工具idea进行开发,开发方式与java8一致,仅需在代码的根目录(src/java/main)下创建module-info.java类,用来书写导出和引入的模块,格式如下:

module analysis.core {

    requires org.slf4j;
    requires org.apache.commons.configuration2;
    requires fastjson;
    requires okhttp3;


    exports pers.anfeng.zhao.analysis.utils;  
}

# requires 代码中命名命名用到的模块使用些命令引入,不支持模块化的jar包使用包名,idea会自动导入
# exports:自己开发的包供外部调用。

编译、打包

使用gradle\maven导出jar包及依赖包

创建模块

使用jmod create --class-path创建模块

$ jmod create --class-path analysis-core.jar analysis.core.jmod
$

# analysis-core.jar 项目导出的jar包
# analysis.core.jmod 使用导出的jar包,创建analysis.core.jmod的模块

创建最小jre镜像

使用jlink创建jre镜像

$ jlink --module-path "C:/Program Files/Java/jdk-11.0.1/jmods;jmods" --add-modules java.base --output jre
$

将自己的项目创建到镜像中去时,会需要项目中使用的第三方jar包都支持模块化,由于当前较多第三方jar不支持模块化,故此处打镜像时只需要把使用java.base模块导出jar即可(如需多个模块使用“,”分隔)。

使用最小镜像运行项目

使用以下命令启动项目

$ jre\bin\java -p . -m analysis.core/pers.anfeng.zhao.analysis.AnalysisTools
$

生成项目目录如下:

--------- jre    # 导出的最小镜像文件
--------- analysis-core.jar    # 导出的项目
--------- analysis.core.jmod    # 项目生成的模块
--------- slf4j-api.jar    # 日志包
--------- 其它第三方jar包

扩展

使用最小镜像启动项目时,如遇到类找不到情况,大多为创建镜像时使用未添加某个模块,可使用jmods list命令查出需要添加的java模块。当有内容输入时,说明缺少此模块

$ jmod list "C:\Program Files\Java\jdk-11.0.1\jmods\java.desktop.jmod" | grep java/beans/IntrospectionException
classes/java/beans/IntrospectionException.class
$
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值