[Java] IntelliJ で module-info.java に設定したライブラリを認識させる方法
コンパイルするためには module-info.java に書くだけでなく、IDE に読み込ませる必要があった。
## 症状
module-info.java で requires したライブラリが認識されず、IntelliJ でコンパイルできない。
“`java:module-info.java
module selflearn {
requires java.net.http;
requires mylib;
requires gson;
}
“`
サンプルコードは Eclipse 対応。
下記のような構成となっていた。
“`prettyprinted
./
├── .checkstyle
├── .classpath
├── .git
├── .idea
│ ├── .gitignore
│ ├── .name
│ ├── codeStyles
│ ├── libraries
│ ├── misc.xml
│ ├── modules.xml
│ ├── vcs.xml
│ └── workspace.xml
├── .project
├── .settings
│ └── org.eclipse.jdt.core.prefs
├── bin
├── doc
├── lib
│ ├── gson-2.8.5.jar
│ └── mylib.jar
├── out
├── selflearn.iml
└── src
├── module-info.java
└── foo/bar/buzz
“`
Eclipse のプロジェクトファイル
– .project
– .classpath
– .settings
IntelliJ のプロジェクトファイル
– .idea/*
– selflearn.iml
## 対処
– 「プロジェクト構造 > プロジェクト設定 > ライブラリ」を開き、`/lib/*.jar` を読み込む。
– IntelliJ の設定ファイル `.iml` に下記が加わり、認識されるようになる。
“`xml:selflearn.iml
“`
> – [Support for Java 9 Modules in IntelliJ IDEA 2017.1 | The IntelliJ IDEA Blog](https://blog.jetbrains.com/idea/2017/03/support-for-java-9-modules-in-intellij-idea-2017-1/)
Eclipse では .classpath に書き込まれているよう。
サンプルコードのままコンパイルできるものと思われるが、なければ似たような手順で読み込む必要がある。
> – [Java 9のモジュール機能「Project Jigsaw」の基本を紹介 (2/2):CodeZine(コードジン)](https://codezine.jp/article/detail/10524?p=2)