私はtest.groovy
として次のGroovyスクリプトはしている静的なクラスを解決することはできません。Groovyは
groovy -cp code/ test.groovy
(groovy -v
reports 2.4.7 )
"Hello、world"を成功させて印刷することが期待されます。その代わり、私が手:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
/tmp/test.groovy: 4: unable to resolve class Vehicle.Deserializer
@ line 4, column 10.
def test=new Vehicle.Deserializer();
^
1 error
スクリプトは前の行に失敗していないので、Groovyは問題なくVehicle
クラスを見つけることです。静的クラスDeserializer
が見つかりません。
しかし、このスクリプトはうまく動作します:
public class Vehicle {
public static class Deserializer {
}
}
def ok=new Vehicle();
def test=new Vehicle.Deserializer();
println "Hello, world!"
は、私はGroovyのは、静的クラス(とその外側のクラスが)で定義されている静的クラスで作業できるようにするためにやっている必要があるものがあります別のGroovyファイルですか?
UPDATE:私はthis issueを見つけたとGroovyは、少なくとも一種のDeserializer
クラスを見ることができることを確認することができます
import test.Vehicle;
import static test.Vehicle.Deserializer;
println Deserializer.class.name
def ok=new Vehicle();
// def test=new Vehicle.Deserializer();
println "Hello, world!"
予想通り、この作品:
test.Vehicle$Deserializer
Hello, world!
しかし、コメントを外すとdef test=new Vehicle.Deserializer();
はまだ私にエラーをもたらし、それはdef test=new Deserializer();
に変更されます( import static
)。
を私は自分自身をテストしていませんが、あなたは、インポート 'としてtest.groovy''にだけでなく、明示的に静的なクラスをインポートしようとしています静的テスト.Vehicle.Deserializer'? – dmahapatro
@dmahapatro: 'import test.Vehicle.Deserializer'は、その行を指す第2の「クラスを解決できません」というエラーになります。不思議なことに、 'import static test.Vehicle.Deserializer'は2番目のエラーを発生させませんが、最初のエラーはクリアされません。 – CommonsWare
はい、同じことが目撃されました。私は 'test.groovy'を実行する前に' groovyc'によって 'Vehicle.groovy'をコンパイルしようとしていましたが、それでも私は不平を感じます。それは問題かもしれません。 – dmahapatro