使用命令行编译和运行Java9模块hello world
使用命令行编译和运行Java9模块hello world
标签(空格分隔): Java Java9
上一篇文章中使用Eclipse编写和运行了最简单的Java9模块。 此处使用命令javac、jar对Java9模块进行编译、打包,并使用命令java运行。 拷贝上一篇文章中的代码,并将目录结构修改如下:
其中的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指定了模块源码路径。 编译完成后,目录结构如下:
注意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。
编译完成后,目录结构如下:
注意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函数。 打包完成后,目录结构如下:
运行命令:java –module-path mlib -m com.example.requirer
代码正常运行,如下:
完整代码:https://github.com/pkpk1234/java9-module-cmd-demo
原文地址: https://zhuanlan.zhihu.com/p/30762184
本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
相关文章