私はgrailsインタラクティブモードで実行しているgrailsアプリケーションを持っています。このアプリケーションにはservice、tagLibs、gspsなどが含まれていますが、最も重要なのはgroovyファイルがsrc/groovyフォルダに入っていることです。Grailsの静的文字列対話モード
これらのグルーヴィーなファイルの一つがAppConstants.groovyと呼ばれ、静的変数の多くが含まれていますが、私は何の問題を取得していない非対話型モードでこれを実行している場合、この変数に加えられた更新がある
public static final String VARIABLE1 = "VARIABLE VALUE"
、すなわち実行中のアプリケーションに反映されます。ただし、インタラクティブモードでVARIABLE1
変数に加えた変更は、exit
とrun-app
に電話してもアプリに反映されません。変更が反映されるためには、対話モードを終了して再起動する必要があります。
最初はこれがキャッシュの問題であり、静的な最終変数がキャッシュされていると考えられ、JVMが再起動されていないので、このキャッシュは決して更新されませんでした。私はしかし、新しい変数を追加することは、前にアプリケーションに存在しなかったものが、対話モードが再開されるまで、アプリケーションの残りの部分では利用できないことに気付きました。
これの背後にある理由は何ですか?クラスはコンパイルされているので、対話型のコンソールでこれを見ることができます。アプリケーションに変更が反映されることを期待しています。実行中ではなく、少なくともexit
とrun-app
が続きます。
追加情報:Grailsのバージョン2.1.0
インタラクティブモードでは、ファイルが変更されていない可能性がありますか?あなただけのアプリを実行する場合は、 "コンパイル1ソースファイル"というメッセージが表示されますか? –
私が言及したように、それはファイルをコンパイルします。しかし、再コンパイル、ストップ、ランアプリの後でさえ、クリーンの後でも静的な最終的なストリングの編集や追加を認識しません対話モードを完全に再開するまで –