解決IDEA JDK9沒有module-info.java的問題

IDEA JDK9沒有module-info.java問題

1. 創建一個maven工程

2. 配置一下項目的編譯環境

註意:必須聲明為jdk9及其以後的版本,不然new中是沒有module-info.java這個選項 

下面是使用jdk8的時候,沒有module-info.java這個選項

使用的JDK8

使用jdk10的時候,就有module-info.java這個選項

<build>
      <plugins>
          <plugin>
              <groupId>org.apache.maven.plugins</groupId>
              <artifactId>maven-compiler-plugin</artifactId>
              <version>3.7.0</version>
              <configuration>
                  <source>10</source>
                  <target>10</target>
              </configuration>
          </plugin>
	</plugins>
</build>

使用的JDK10

3. 一些註意事項

新建 module-info.java 文件必須選擇 java這個文件夾,也就是存放java代碼的源文件夾,選擇其他文件夾右鍵是沒有的

自己不能手動通過 new JavaClass 創建 module-info.java 文件,自己是沒法創建的,因為Java變量定義規范是:字母、數字、下劃線,$符號,下面是創建失敗的截圖 

這裡寫圖片描述

這裡寫圖片描述

雖然IDEA不讓創建,但是我們可以自己在外面創建好一個module-info.java 文件,再復制到 java 文件夾下(不建議)

module-info.java文件

提供模塊服務接口:

module module.first {
    exports first.p1;
//    provides first.p1.Shoe 
//        with first.p2.DoubleStar,first.p2.Warrior;    
    provides first.p1.Shoe 
    with first.p1.ShoeFactory;//必須實現public static provider方法
}

使用模塊服務接口:

module module.second {    
    requires module.first;    
    uses first.p1.Shoe;
}

下面演示訪問權限

open module module.first {
//module module.first {
    exports first.p1;    
    //opens first.p1;
}
module module.second {
    exports second.p1;
    requires transitive module.first; 
}
module module.third {
    requires module.second;
}

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: