使用命令行编译和运行Java9模块hello world

2019-07-04 00:00:00 编译 模块 命令行

使用命令行编译和运行Java9模块hello world

标签(空格分隔): Java Java9

上一篇文章中使用Eclipse编写和运行了最简单的Java9模块。 此处使用命令javac、jar对Java9模块进行编译、打包,并使用命令java运行。 拷贝上一篇文章中的代码,并将目录结构修改如下:

《使用命令行编译和运行Java9模块hello world》

其中的java文件全部拷贝自上一篇文章,没有任何改动。 新增了mods目录,用于存放编译后的模块class文件。 新增了mlib目录,用于存放打包后的模块jar文件。

注意:如果是在windows上,需要将 / 修改为 \ 。

编译com.exmaple.hello模块

运行命令

javac -encoding “UTF-8” -d mods –module-source-path hello hello/com.example.hello/module-info.java hello/com.example.hello/com/example/hello/HelloModule.java

用-d指定编译目的地为mods+模块名。 编译为模块时需要指定模块描述文件module-info.java。 参数–module-source-path指定了模块源码路径。 编译完成后,目录结构如下:

《使用命令行编译和运行Java9模块hello world》

注意mods下面创建了目录com.example.hello,编译后的com.exmaple.hello模块的class文件即位于该目录下。

编译com.example.requiere模块

运行命令

javac -encoding “UTF-8” -d mods –module-path mods –module-source-path requirer requirer/com.example.requirer/module-info.java requirer/com.example.requirer/com/example/requiere/RequirerMain.java

注意其中的–module-path参数指定了依赖的模块com.exmaple.hello位于目录mods下。 如果不添加此参数,javac会抛出错误: 找不到模块: com.example.hello。

《使用命令行编译和运行Java9模块hello world》
《使用命令行编译和运行Java9模块hello world》

编译完成后,目录结构如下:

《使用命令行编译和运行Java9模块hello world》

注意mods下面创建了目录com.example.requiere,编译后的com.example.requiere模块的class文件即位于该目录下。

运行

运行命令java –module-path mods -m com.example.requirer/com.example.requiere.RequirerMain

注意: 使用参数–module-path mods指定了模块位于目录mods下。

使用-m com.example.requirer/com.example.requiere.RequirerMain指定了运行模块com.example.requirer中的类com.example.requiere.RequirerMain中的main函数。

打包

首先打包模块com.example.hello为com.example.hello.jar,命令如下: jar –create –file=mlib/com.example.hello.jar -C mods/com.example.hello .

参数–file=mlib/com.example.hello.jar指定了jar的路径。 参数-C指定了jar包要包含的目录,此处为模块的class路径。

然后打包模块com.example.requiere为com.example.requiere.jar,命令如下:

jar –create –file=mlib/com.example.requirer.jar –main-class=com.example.requiere.RequirerMain -C mods/com.example.requirer .

参数-main-class指定了jar包的Main-Class,即 java -jar com.example.requirer.jar时会执行com.example.requiere.RequirerMain中的main函数。 打包完成后,目录结构如下:

《使用命令行编译和运行Java9模块hello world》

运行命令:java –module-path mlib -m com.example.requirer

代码正常运行,如下:

《使用命令行编译和运行Java9模块hello world》
《使用命令行编译和运行Java9模块hello world》

完整代码:https://github.com/pkpk1234/java9-module-cmd-demo

    原文作者:李佳明
    原文地址: https://zhuanlan.zhihu.com/p/30762184
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。

相关文章