LoginSignup
1
0

More than 5 years have passed since last update.

IntelliJ IDEA 2016.3 で Dagger 2 を使うとビルドに失敗する問題と回避策

Posted at

表題通り、IntelliJ IDEA 2016.3 で Dagger 2 を使っているとビルド時に次のようなエラーが発生する。

java.lang.NoSuchMethodError: org.eclipse.jdt.internal.compiler.impl.CompilerOptions.versionToJdkLevel(Ljava/lang/Object;)J

手元では Dagger 2.8 と 2.6 で確認した。

YouTrack のチケット

既に YouTrack にはチケットが登録されていて、解決済みになっている。

原因

チケットの情報を見る感じ、以下のような感じっぽい。

  • Eclipse Java Compiler 4.6.1 の JAR を IntelliJ IDEA が持っている。 コンパイル時にはそれがクラスパスに追加される。
  • Dagger も Eclipse Java Compiler に依存している。 4.6.1 より古いバージョンが必要っぽい。
  • ビルド時に実際にクラスパスに追加されているのは 4.6.1 なので、Dagger が使おうとするメソッドがなくてビルドエラーになる。

解決策

Workaround

とりあえずの回避策としては、IntelliJ IDEA 2016.3 のディレクトリの中の lib/ecj-4.6.1.jar を削除しちゃうこと。

根本的な修正

Java コンパイラとして 「Eclipse」 が選択されているときのみ Eclipse Java Compiler の JAR ファイルをクラスパスに追加するよう変更されるらしい。 バージョン 2016.3.1 に含まれる予定とのこと。
(Eclipse Java Compiler の JAR がクラスパスに追加されるのは、IntelliJ IDEA の Java コンパイラとして 「Eclipse」 を選択したとき (設定の 「Build, Execution, Deployment」 → 「Compiler」 → 「Java Compiler」 で選択できる) 用ってことなのかな?)

関連

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0