16

最近、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

「Groovy Libraries」はすでにクラスパスにあることに注意してください。

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

4

3 に答える 3

18

最新の groovy/dependent jar を使用していますか? .

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

表示されている特定のエラーは、asm 3.2のインターフェイスとasm 4.0 以降のクラスorg.objectweb.asm.ClassVisitorであるためです。

于 2012-07-31T12:33:09.030 に答える
2

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

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

于 2013-02-22T09:24:37.537 に答える