web-dev-qa-db-ja.com

EclipseJunoでGroovyを実行中に例外Java.lang.IncompatibleClassChangeError

最近、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」はすでにクラスパス上にあることに注意してください。

今、私はここで何が間違っているのですか?

15
user898535

あなたは最新のグルーヴィー/依存ジャーを使っていますか? 。

Java.lang.IncompatibleClassChangeError後方互換性の問題が原因で発生します。それを解決するには、クライアントコードを再コンパイルする必要があります。

表示されている特定のエラーは、org.objectweb.asm.ClassVisitorは、asm 3.2では Interface であり、asm 4.0以降では Class です。

17
Ajay George

1つのモジュールでSpringとGroovyを使用しても同じ問題が発生しました。 3.1.2のSpringはまだ古いASMを使用していますが、GroovyはクラスのあるASMを使用しています。一部の除外を調整することは可能かもしれませんが、それが常にオプションであるとは限らないに違いありません。

読んだ後 このスレッド Groovyに必要なすべてのライブラリのリストではなく、groovy-all.jarを使用することにしました。それがあなたの選択肢であるなら、それ以上の問題を回避する簡単な方法かもしれません。

2
virgo47

私は以下のエラーに対して多くの解決策を試しました。 Java.lang.IncompatibleClassChangeError:インターフェースorg.objectweb.asm.MethodVisitorが見つかりましたが、クラスが必要でした。動作したのは、安心した依存関係からグルーヴィーなアーティファクトを除外することだけです。完全な回避策については、以下のリンクを参照してください。

https://blog.jayway.com/2013/04/12/solving-asm-conflicts-after-upgrading-to-groovy-2-1/

0
S.Roshanth