2012-03-20 9 views
4

GroovyClassLoaderを使って埋め込みGroovyスクリプトを実行しているJavaアプリケーションがあります。 Javaの型をGroovyスクリプトに渡している間に奇妙なエラーが発生するまで、すべてがうまくいっています。Groovyのjava.util.DateまたはJavaのjava.util.Date?

私の問題はこうです:java.util.Dateをパラメータとしてグルーヴィースクリプトに渡しています。私はGroovyのjava.util.Dateが素晴らしいclearTime()関数を持っていることを発見しました。私はJavaの日付ではなくGroovyの日付を持っているので、

groovy.lang.MissingMethodException: No signature of method: java.util.Date.clearTime() is applicable for argument types:() values: [] 

私はこれを前提としています。私はこの関数を呼び出すしようとすると、しかし、私はこの例外を取得します。 2つの間で変換する方法はありますか?

Groovyがjdkタイプをオーバーライドしているように見えますが、私は完全に理解していません。 (まあ、これはここで使用するのが正しい用語かどうか分かりません。)Groovy内部でjava.util.Dateを作成するときに何が起こるかについて完全に間違っている場合は修正してください。 Javaの関数に組み込むことができます。

+0

また、このケースでは、Javaの日付を渡してJodaに切り替えることを検討しています。しかし、GroovyがJavaの型を渡すときに、世界で何が起きているのかを知りたいです。私はこの問題に遅かれ早かれ再起すると確信しています。 –

+0

私は答えとして提出するつもりはありませんが、このための私のハックアンドスラッシュの修正は、Java GregorianCalendarを使用し、そのset()を使用して日付を設定し、好きです。 –

+5

この失敗の例を投稿できますか?このように "Groovy date"はありません。グルーヴィーコードを実行している間にメタクラスを参照している正規の日付です。 –

答えて

0

ここに私の不具合が分かりました。私のテストアプリは1.8.6を望む通りにバインドされていましたが、私の主なプログラムは1.6.5を使用していました(呼びかけようとしていた機能が1.6.7で導入されました)。 Eclipseはpom.xmlを更新したときに新しいバージョンで実行しないことにしました。

関連する問題