[英]java.lang.NoClassDefFoundError: Could not initialize class play.data.format.Formatters
我正在使用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 /登錄時,我得到以下異常 :
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]
所以看起來Formatters在classpath中。 但是當我再次點擊瀏覽器中的重新加載按鈕時,我得到了與之前相同的NoClassDefFoundError(這次是我添加的行)。
NoClassDefFoundError通常意味着該類不在類路徑上。 當你編譯它時可能它就在那里,但是現在它已經丟失了(大多數情況下看到了共享庫)。
看起來可能找不到play-java_2.10.jar。
編輯:(總結評論)
Play jar使用Spring來綁定數據。 最初的想法是Spring沒有包含在classpath中,但確實如此。 但是,類路徑上的Spring似乎與lib文件夾中的一些Spring jar有沖突。 刪除lib文件夾中的jar似乎已經清除了錯誤。 :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.