play 部署问题 play.exceptions.TemplateExecutionException: No signature of method: java.lang.String.f

前提: 使用 play 局部更新包生成器V3.0 (http://download.csdn.net/detail/fasttime/9453996)  打包 html,部署至线上后可能出现以下问题。


 formatMobile() 是 play.templates.JavaExtensions 自定义的子类中的方法,但 play 本身并不会去找 JavaExtensions 自定义的子类的方法,所以导致了这个错误

play.exceptions.TemplateExecutionException: No signature of method: java.lang.String.formatMobile() is applicable for argument types: () values: []
     at play.templates.BaseTemplate.throwException(BaseTemplate.java:86)
     at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:272)
     at play.templates.GroovyTemplate.internalRender(GroovyTemplate.java:282)
     at play.templates.Template.render(Template.java:26)
     at play.templates.GroovyTemplate.render(GroovyTemplate.java:202)
     at play.mvc.results.RenderTemplate.<init>(RenderTemplate.java:24)
     at play.mvc.Controller.renderTemplate(Controller.java:662)
     at play.mvc.Controller.renderTemplate(Controller.java:642)
     at play.mvc.Controller.render(Controller.java:699)
     at controllers.BaseController.logIllegalState(BaseController.java:288)
     at play.mvc.ActionInvoker.invoke(ActionInvoker.java:510)
     at play.mvc.ActionInvoker.invokeControllerMethod(ActionInvoker.java:484)
     at play.mvc.ActionInvoker.invoke(ActionInvoker.java:198)


解决方案:

   将 JavaExtensions 自定义的子类的方法复制至 JavaExtensions 类中,替换 play-1.2.7.jar 中的 class  即可恢复正常。


注:

  http://download.csdn.net/detail/fasttime/9453996 中的3.0 有缺陷,在类有内部类的情况下,打包会出现问题(内部类没打上去) ,V3.1已修复,有需要的请单独与我联系 。


20160312备注:

     之前产生问题的原因是由于在定制 paly 包时,JavaExtensions 的子类没有被 ClassLoader 正常加载。采用最新的包(play-1.2.7.jar 定制版 http://download.csdn.net/detail/fasttime/9459444)或 重新参考文章(play1.2.7局部编译,局部打包完整解决方案 http://blog.csdn.net/fasttime/article/details/50813286)  将不会出现此类问题。

最后感谢贺军的协助。

猜你喜欢

转载自blog.csdn.net/fasttime/article/details/50850594