java 模块 hello world
Contents
java 模块
mkdir -p src/speaker/com/pingd/test/java/module
vim src/speaker/com/pingd/test/java/module/Hello.java
src/speaker/com/pingd/test/java/module/Hello.java
package com.pingd.test.java.module;
public class Hello{
public static void foo (){
System.out.println("hello world");
}
}
src/speaker/module-info.java
speaker: 模块名
requires xxx;表示这个模块需要引用的其他模块名。
java.base可以被自动引入
exports: 到package级
module speaker{
exports com.pingd.test.java.module;
}
src/app/com/pingd/test/java/module/app/App.java
package com.pingd.test.java.module.app;
public class App{
public static void main(String args[]){
com.pingd.test.java.module.Hello.foo();
}
}
src/app/module-info.java
module app{
requires speaker;
}
build
cd java-module-x
javac -d out --module-source-path src -m speaker
javac -d out --module-source-path src -m app
run
java –module-path ./out –module app/com.pingd.test.java.module.app.App
build jar
jar --create --file speaker.jar -C out/speaker .
jar --create --file app.jar --main-class com.pingd.test.java.module.app.App -C out/app .
run jar
java --module-path . --module app
目录 结构
├── out
│ ├── app
│ │ ├── com
│ │ │ └── pingd
│ │ │ └── test
│ │ │ └── java
│ │ │ └── module
│ │ │ └── app
│ │ │ └── App.class
│ │ └── module-info.class
│ └── speaker
│ ├── com
│ │ └── pingd
│ │ └── test
│ │ └── java
│ │ └── module
│ │ └── Hello.class
│ └── module-info.class
└── src
├── app
│ ├── com
│ │ └── pingd
│ │ └── test
│ │ └── java
│ │ └── module
│ │ └── app
│ │ └── App.java
│ └── module-info.java
└── speaker
├── com
│ └── pingd
│ └── test
│ └── java
│ └── module
│ └── Hello.java
└── module-info.java
module-info.java一般包含以下信息:
模块名称
该模块依赖的其他模块
该模块提供了其他模块
四种模块类型:
命名的模块(也称为应用程序模块)包含上述module-info.java
平台模块(类似于前者,但这些都是随JDK一起发货)
自动模块是在模块路径上提供的那些旧JAR
未命名的模块是标准类路径上列出的所有内容
对Maven用户的影响
为了能够使用JDK 9的模块系统maven-compiler-plugin版本3.6.1或更高版本
|
|
工具链插件
$HOME/.m2/toolchains.xml
|
|
pom.xml
|
|
启用Java 9语言支持
|
|
属性 maven.compiler.release直接映射到该-release标志javac,而另外两个属性只对IntelliJ有必要 ,用来了解源码兼容性。
一个模块示例
https://blog.csdn.net/rickiyeat/article/details/78068316
模块文件 module-info.java
放在和模块名相同的目录下
如果模块名称是 com.wiloon.java9x, module-info.java 应该放在:src/com.wiloon.java9x/module-info.java
module-info.java
|
|
添加代码
|
|
|
|
编译模块
|
|
运行
|
|
Author w1100n
LastMod 2020-03-07