groovy-eclipse-compilerを使用してgroovyクラスをコンパイルするMavenプロジェクトがあります。このプロジェクトは、コマンドラインから(「mvntest」を介して)正常に実行されます。しかし、Idea内でテストを実行しようとすると、テストを実行する前にスタックトレースが発生するGroovyコンパイラのバグが発生します。
プロジェクト全体へのリンクを添付し、Intellijの人たちにもバグを報告しますが、このサイトの誰かがこの問題の解決策を見つけて見つけてくれることを願っています。
Intellijが私に戻ってきたら、ここに解決策を投稿します。
ここで利用可能なプロジェクトzipファイル:http://dl.dropbox.com/u/9940067/groovy.compiler.bug.zip
とにかく、私は問題を1つのクラスに絞り込み、バグを誘発または非表示にするために少し調整することができます。ここにあります:
package com.other
class FooProperties extends Properties {
FooProperties(File eCeNSHome) {
assert eCeNSHome != null
new File(eCeNSHome, "properties").withInputStream { stream -> load(stream) }
}
String getString(String key, String defaultValue = null) {
}
/**
* @param key the property name
* @return the property integer value if it exists or the defaultValue if not
*/
int getInt(String key, int defaultValue = 0) {
try {
Integer.parseInt(getProperty(key))
} catch(final NumberFormatException e) {
return defaultValue
}
}
}
以下のgetIntメソッドを次のようなものに変更した場合
int getInt(String key、int defaultValue = 0){return 100}
その後、Groovyコンパイラのバグはなくなります。コードを元のようにバグの表面の上に残しておくと(下のスタックトレースを使用して)。ヘルプやアドバイスをいただければ幸いです。
PS:似たようなバグを検索してみたところ、修正されたコンパイラのバグの報告が見つかりましたが、特性が私のものとは少し異なります。
PPS:「mvntest」を実行してもテストは見つかりません。しかし、それは問題ではありません。コマンドラインを使用すると、クラスが少なくとも正常にコンパイルされることがわかります(Groovyコンパイラのバグはトリガーされません)。
スタックトレース
バグ!ソースユニットのフェーズ「クラス生成」の例外'/home/chris/cybergrid/ecens-perception-engine/src/main/groovy/com/other/FooProperties.groovy'java.lang.ObjectのClassNode#getTypeClassが前に呼び出されますタイプクラスは、org.codehaus.groovy.ast.ClassNode.getTypeClass(ClassNode.java:1311)のorg.codehaus.groovy.classgen.asm.BytecodeHelper.box(BytecodeHelper.java:559)のorg.codehausに設定されています。 groovy.classgen.asm.OperandStack.box(OperandStack.java:170)at org.codehaus.groovy.classgen.asm.CallSiteWriter.makeCallSite(CallSiteWriter.java:302)atorg.codehaus.groovy.classgen.asm.InvocationWriter。 org.codehaus.groovy.classgen.asm.InvocationWriter.makeCall(InvocationWriter.java:87)のmakeCall(InvocationWriter.java:182)org.codehaus.groovy.classgen.asm.InvocationWriterの