play 部署問題 play.exceptions.TemplateExecutionException: No signature of method: java.lang.String.f
阿新 • • 發佈:2018-11-09
前提: 使用 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 正常載入。採用最新的包(
最後感謝賀軍的協助。