2012-02-17 10 views
0

静的なJava型付きテンプレートエンジン用のホットスワップ機構を実装しようとしています。私は、Play!Frameworkがアプリケーションクラスをリロードするのと同じアプローチを採用しています。しかし、私はいつも次のエラーを受け取ります:Java instrument:HotswapaAentがクラス定義を再ロードできませんでした

Caused by: java.lang.UnsupportedOperationException: class redefinition failed: attempted to change the schema (add/remove fields) 
     at sun.instrument.InstrumentationImpl.redefineClasses0(Native Method) 
     at sun.instrument.InstrumentationImpl.redefineClasses(InstrumentationImpl.java:150) 
     at play.classloading.HotswapAgent.reload(HotswapAgent.java:21) 
     at com.greenlaw110.rythm.play.RythmPlugin$5.reload(RythmPlugin.java:226) 
     at com.greenlaw110.rythm.internal.compiler.TemplateClassLoader.detectChange(TemplateClassLoader.java:335) 
     ... 19 more 

誰もがこの問題をどのように生き残ることができますか?

答えて

1

私は何が起こっているのか理解していると思います。 Playのアプリケーションクラスローダーは、この種のエラーを実際に生き残ることはできません。それがするのは、エラーが発生したときにPlayを再起動することです。プロセス再生によってアプリケーションクラスローダの新しいインスタンスが作成されます。私は同じプロセスを踏襲し、それは働くことが証明されました。

関連する問題