簡體   English   中英

java.lang.NoClassDefFoundError:無法初始化類play.data.format.Formatters

[英]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通常意味着該類不在類路徑上。 當你編譯它時可能它就在那里,但是現在它已經丟失了(大多數情況下看到了共享庫)。

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM