Java9 模块化打包应用程序
Java9新特性——模块化
Java9引入了模块化的特性,利用这个特性可以创建小型的JRE来发布应用程序,减少JRE体积,提高资源利用率
将应用打包成模块
在源码根路径新建module-info.java来配置模块信息
module 模块名(用于其它应用导入,以及运行环境打包) { //requires声明依赖模块 requires java.base; //transitive关键字将依赖的模块传递出去,导入当前模块的时,无需再次导入即可以使用这个依赖的模块 requires transitive java.desktop; //exports声明导出的模块,即外部工程导入本模块之后,可见的包名,其他包名将对外隐藏 exports top.dreagonmon.app.test; }
- 编译源码,生成字节码.class文件(生成的字节码中有module-info.class文件)
将字节码打包成jmod模块包
jmod create --class-path <字节码所在的路径> <输出的jmod文件路径>
根据jmod生成运行环境
jlink --output <输出目录名> --add-modules <应用模块名> --module-path <jmod文件所在的路径>
可以不包含java自带模块的路径,正确配置的JAVA环境会自动发现这些模块
运行应用的主类
cd <输出目录>/bin/java 主类类名(一定要将主类导出,才可以从外部执行)