1

以前にも同様の質問をしましたが、GroovyScriptEngine の仕組みとクラスのロードがどのように実行されるかを明確にする必要がありました。WEB-INF にグルーヴィーなクラスを含む Vaadin Web アプリケーションがあります。Web アプリケーションは、GroovyScriptEngine を介して UI ロジックをロードします。エラーにつながる一連のイベントを次に示します。

  1. war を tomcat にデプロイしてサーバーを起動すると、アプリケーションは期待どおりに実行されます
  2. 展開された WEB-INF フォルダーにある groovy ファイルに重要でない変更を加えます (たとえば、コメント)。
  3. ページを更新すると、GSE が明らかにクラスをリロードし、アプリケーションが GroovyCastException: Cannot cast object 'com.company.myclass@7cde31f8' with class 'com.company.myclass' to class 'com.company.myclass'.

これはクラス ローダーの問題である可能性があることを理解しています。提案?GroovyScriptEngine の要点は、コンテナを再起動せずにホット編集された Groovy クラスを処理できることだと思いました。

4

1 に答える 1

1

確かにこれは ClassLoader の問題です。クラスをリロードする必要がある場合 (開発を高速化するためだと思います)、JRebelを試してください。groovy と tomcat でうまく動作します。

于 2013-09-19T17:54:02.973 に答える