最近、Eclipse Junoをダウンロードし、最新のGroovyプラグインをインストールしました。
これが私のGroovyファイルの外観です。
package groovy_support
class TimePass {
static void main(def args){
println "Hello World"
}
}
以前のEclipseバージョン(Indigo)またはコマンドラインからこれを実行すると、実行されます。ただし、Eclipse Junoでは、Eclipseコンソールで次の例外が発生します。
Caught: Java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected
Java.lang.IncompatibleClassChangeError: Found class org.objectweb.asm.ClassVisitor, but interface was expected
「GroovyLibraries」はすでにクラスパス上にあることに注意してください。
今、私はここで何が間違っているのですか?
1つのモジュールでSpringとGroovyを使用しても同じ問題が発生しました。 3.1.2のSpringはまだ古いASMを使用していますが、GroovyはクラスのあるASMを使用しています。一部の除外を調整することは可能かもしれませんが、それが常にオプションであるとは限らないに違いありません。
読んだ後 このスレッド Groovyに必要なすべてのライブラリのリストではなく、groovy-all.jarを使用することにしました。それがあなたの選択肢であるなら、それ以上の問題を回避する簡単な方法かもしれません。
私は以下のエラーに対して多くの解決策を試しました。 Java.lang.IncompatibleClassChangeError:インターフェースorg.objectweb.asm.MethodVisitorが見つかりましたが、クラスが必要でした。動作したのは、安心した依存関係からグルーヴィーなアーティファクトを除外することだけです。完全な回避策については、以下のリンクを参照してください。
https://blog.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1/