あまり良い質問でないことを承知の上ですが、質問させてください。
質問
IntelliJ で maven プロジェクトでJavaのコードを書いていました。
このときには何も問題は起きていなかったのですが、最近、kotlinでのコードを追加し混在させていました。
すると、IDE上でプログラムを実行したときにかなりの頻度で、java.lang.NoSuchMethodError が発生するようになりました。
maven clean を行い、再度実行すると今度は問題なく実行できます。
特にリフレクションなどは使っていません。
該当のメソッドを追加したり削除したりといったこともしていません。
そもそも同一モジュール内(同一コンパイル単位)でのリフレクションですらないメソッド呼び出しなのだからメソッドがなかったらコンパイルエラー(Unresolved reference)となるハズだと思っています。
該当のメソッド以外の部分を修正
↓
IDEでプログラムを実行
↓
該当のメソッドで NoSuchMethodError が発生
↓
maven clean 実行
↓
再度IDEでプログラムを実行
↓
問題なく動作
↓
最初に戻る
kotlin自体がまだ新しいのでIDEかコンパイルの問題なのでしょうか?
同じような現象にあっている方はいらっしゃいますでしょうか。
原因が自分の実装なのか、IDEなのかmavenなのかコンパイラなのか想像もつかないので、何かヒントになることでもご教示いただければ幸いです。
環境
IntelliJ IDEA 2017.1.4 Build #IU-171.4694.23
Maven: 3.3.9
JRE: 1.8.0_112-release-736-b21 amd64
JVM: OpenJDK 64-Bit Server VM by JetBrains s.r.o
kotlin: 1.1
maven-compiler-plugin: 3.1
kotlin-maven-plugin: 1.1.2-4
ソースコード
コードを書いても仕方ないと思いますが、一応。
↓ここで java.lang.NoSuchMethodError が発生しますが、メソッドはあります。ジャンプもできます。
kotlin
1val signal = rate.signal(param1, param2, param3)
呼び出し先はこんな感じです。
kotlin
1class Rate{ 2 ・ 3 ・ 4 ・ 5 fun signal(param1: Int, param2: Int, param3: Int) = 6 signal.get(Triple(param1, param2, param3)) 7 ?: throw RuntimeException("シグナルの取得に失敗しました - $param1 $param2 $param3")
※該当部分自体はkotlinのみです。(kotlinのコードからkotlinのメソッドを呼んでいるだけ)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/06/13 06:41
2017/06/15 04:15
2017/06/15 04:22
2017/06/15 05:06