[Java] IntelliJ で module-info.java に設定したライブラリを認識させる方法
コンパイルするためには module-info.java に書くだけでなく、IDE に読み込ませる必要があった。
症状
module-info.java で requires したライブラリが認識されず、IntelliJ でコンパイルできない。
module selflearn {
requires java.net.http;
requires mylib;
requires gson;
}
サンプルコードは Eclipse 対応。
下記のような構成となっていた。
./
├── .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
に下記が加わり、認識されるようになる。
<orderEntry type="library" name="gson-2.8.5" level="project" />
<orderEntry type="library" name="mylib" level="project" />
Eclipse では .classpath に書き込まれているよう。
サンプルコードのままコンパイルできるものと思われるが、なければ似たような手順で読み込む必要がある。