Java9模块(module)学习笔记

单模块示例

  • 目录结构
    D:.
    +---mods
    \---src
        \---mod.test
            |   module-info.java
            |
            \---com
                \---tomhex
                        Main.java
  • 源文件代码
    /* FileName: module-info.java
     * Authour : tomhex
     * DateTime: 2022-02-18 14:09
    **/
    module mod.test{
    }
    /* FileName: Main.java
     * Authour : tomhex
     * DateTime: 2022-02-18 14:09
    **/
    
    package com.tomhex;
    
    public class Main{
    	public static void main(String[] args){
    		System.out.println("hello,moudle");
    	}
    }

  • 编译运行
    PS D:\java> javac --module-source-path src -d mods .\src\mod.test\com\tomhex\Main.java
    PS D:\java> java -p mods -m mod.test/com.tomhex.Main
    hello,moudle
    
     
  • 运行后目录结构 
    D:.
    +---mods
    |   \---mod.test
    |       |   module-info.class
    |       |
    |       \---com
    |           \---tomhex
    |                   Main.class
    |
    \---src
        \---mod.test
            |   module-info.java
            |
            \---com
                \---tomhex
                        Main.java

多模块示例 (模块间引用)

  • 目录结构 
    D:.
    +---mods
    \---src
        +---mod.hello
        |   |   module-info.java
        |   |
        |   \---com
        |       \---hello
        |               Hello.java
        |
        \---mod.main
            |   module-info.java
            |
            \---com
                \---main
                        Main.java
  • 源文件代码 
    /* 
     * FileName: src/mod.hello/module-info.java
    **/
    
    module mod.hello{
        //导出外部可见包
        exports com.hello;
    }
    /*
     * FileName: src/mod.hello/com/hello/Hello.java
    **/
    package com.hello;
    
    public class Hello{
    	
    	public SayHello(){
    		System.out.println("hello,moudle");
    	}
    		
    	
    }
     
    /*
     * FileName: src/mod.main/module-info.java
     */
    module mod.main{
        //引用模块(注意不是包)
        requires mod.hello; 
    }
    /*
     *FileName: src/mod.main/com/main/Main.java
    **/
    
    package com.main;
    import com.hello.Hello;
    public class Main{
    	public static void main(String[] args){
    
    		Hello h = new Hello();
    		h.SayHello();
    	}
    }
  • 编译运行 
    PS D:\java> javac --module-source-path src -d mods src/mod.hello/com/hello/Hello.java src/mod.main/com/main/Main.java
    PS D:\java> java -p mods -m mod.main/com.main.Main
    hello,moudle
  •  运行后目录结构 
    D:.
    +---mods
    |   +---mod.hello
    |   |   |   module-info.class
    |   |   |
    |   |   \---com
    |   |       \---hello
    |   |               Hello.class
    |   |
    |   \---mod.main
    |       |   module-info.class
    |       |
    |       \---com
    |           \---main
    |                   Main.class
    |
    \---src
        +---mod.hello
        |   |   module-info.java
        |   |
        |   \---com
        |       \---hello
        |               Hello.java
        |
        \---mod.main
            |   module-info.java
            |
            \---com
                \---main
                        Main.java

小结 

  1. 模块(module)是包的集合,一个模块下可以有多个包
  2. 引用某个模块里的包必须是那个模块里module-info.java里exports出来的包
  3. 个人见解,如有不对的地方,欢迎大家指正。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Tomhex

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值