Play 2.1.2 を使用していますが、動的フォームを使用したいと考えています。自分の小さな hello world プロジェクトで試してみたところ、すべてうまくいきましたが、他の大きなプロジェクトでフォームを使用すると、例外が発生します。これが私のコードです(両方のプロジェクトで同じです):
コントローラ
public static Result signInForm() {
DynamicForm form = Form.form().bindFromRequest(); //exception on this line
return renderJapid(form);
}
ルート
GET /sign-in controllers.Authentication.signInForm()
localhost:9000/sign-in に移動すると、次の例外が発生します。
Caused by: java.lang.NoClassDefFoundError: Could not initialize class play.data.format.Formatters
at play.data.Form.bind(Form.java:320) ~[play-java_2.10.jar:2.1.2]
at play.data.DynamicForm.bind(DynamicForm.java:100) ~[play-java_2.10.jar:2.1.2]
at play.data.DynamicForm.bindFromRequest(DynamicForm.java:71) ~[play-java_2.10.jar:2.1.2]
at controllers.Authentication.signInForm(Authentication.java:310) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:305) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:305) ~[na:na]
助けてくれますか?どこに問題があるのでしょうか? 両方のプロジェクトで Global.java と application.conf を確認しましたが、この問題の原因となるものは見つかりませんでした。
更新:
このコードを入れてみました
FormattingConversionService fcs = Formatters.conversion;
動的フォーム呼び出しのある行の前。ブラウザで localhost:9000/sign-in をリロードした後、その新しい行で次の例外が発生しました。
Caused by: java.lang.NullPointerException: null
at play.data.format.Formatters.register(Formatters.java:186) ~[play-java_2.10.jar:2.1.2]
at play.data.format.Formatters.<clinit>(Formatters.java:100) ~[play-java_2.10.jar:2.1.2]
at controllers.Authentication.signInForm(Authentication.java:310) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:305) ~[na:na]
at Routes$$anonfun$routes$1$$anonfun$applyOrElse$19$$anonfun$apply$19.apply(routes_routing.scala:305) ~[na:na]
at play.core.Router$HandlerInvoker$$anon$6$$anon$2.invocation(Router.scala:175) ~[play_2.10.jar:2.1.2]
それで、フォーマッターはクラスパスにあるようです。しかし、ブラウザーの再読み込みボタンをもう一度押すと、以前と同じ NoClassDefFoundError が表示されます (今回は追加した行で)。