[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)