繁体   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