Java9 、Eclipse Oxygen Maven使用で、Wicket8 を使ったプロジェクトでコンパイルエラー以下が出る。
型 org.slf4j.Logger を解決できません。必要な .class ファイルから間接的に参照されています
wicket-core 8.0.0-M8 は、まだ sl4j-api 1.7.25 という
まだモジュール宣言対応していない=module-info.java からのモジュール定義を含んでないものを
使用している。
wicket-core が、sl4j-api 1.7.25 を使用する依存をもっている。
このような場合、Maven依存による 上のエラーになる。
2017-12-16 現時点最新の sl4j-api 1.8.0-beta0 は、module-info.java によるモジュール定義が
あるので、これを参照するように、pom.xml で dependencyManagement で追記、依存関係-参照を
強制的に sl4j-api 1.8.0-beta0 にする。
<dependencies> -省略- </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.8.0-beta0</version> </dependency> </dependencies> </dependencyManagement> <build> -省略- </build>
そして、module-info.java で、
requires org.slf4j;
を追記すれば、解決する。
それにしても、module-info.java を書いた時に、Eclipse で
package パッケージ名 does not exist or is empty
のエラーが出るのは、なんとかして欲しいけど、まだ Pleades Eclipse は、この現時点 JDT 4.7.1a で
4.7.2 以降でないとダメみたい。
https://bugs.eclipse.org/bugs/show_bug.cgi?id=525603