grails - 间歇性 Grails 异常 : MissingMethodException

标签 grails

我们的生产系统和一些测试系统存在问题。我们有一个间歇性的 Grails 异常,它发生在 View 中。

No signature of method: static org.apache.commons.lang.StringUtils.isNotBlank() is applicable for argument types: (null) values: [null] Possible solutions: isNotBlank(java.lang.String), isBlank(java.lang.String)



该错误似乎表明 Grails 似乎无法确定它应该使用 StringUtils.isNotBlank(String) 应该在将 null 传递给它时使用。

我们注意到:
  • 在生产中,这个问题出现了,并且花了 12 个多小时才似乎神奇地消失了。搜索日志似乎表明没有重新启动。
  • 一位开发人员早上在测试系统上没有发现任何问题。几个小时后,他能够重现它。为了解决这个问题,我们重新启动了 Tomcat。

  • 我不确定 Grails 版本是什么或如何检查它。如果您在下面评论如何找到它,我很乐意使用 Grails 版本编辑问题。
  • 是什么原因造成的,有没有一种方法可以可靠地重现它?
  • 有没有可靠的方法来解决它?
  • 最佳答案

    我可以通过运行在控制台中重现这一点:

    org.apache.commons.lang.StringUtils.isNotBlank((Object)null) => Your Error
    

    仅传递 null 允许编译器将 null 强制为 String:
    org.apache.commons.lang.StringUtils.isNotBlank(null) => false
    

    您传入的任何内容都可能严格键入为 String 以外的内容,但为 null。 Groovy 编译器在强制类型方面非常聪明,但我已经看到它在一些简单的情况下崩溃了。如果使用 @CompileStatic 和/或使用 native Java 对象,则尤其如此。

    关于grails - 间歇性 Grails 异常 : MissingMethodException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30249252/

    相关文章:

    mysql - Grails - 提取数据并显示它?

    grails - 将对象状态保存在 RAM 中而不持久化数据

    grails - 在 groovy 类中访问 grailsApplication 或 Service

    grails - Grails 中的 Geb 功能测试失败,因为尚未启动 Web 应用程序

    grails - 如何嵌套Grails Controller 路径

    grails - 结合使用IntelliJ和JBoss来创建Grails应用

    email - 使用Grails异步邮件插件设置SMTP信封邮件

    tomcat - support.PluginAwareResourceBundleMessageSource 无法解析插件的任何资源

    grails - 为Web创建Grails 3应用程序的最佳方法

    grails - Grails 中的 "Could not remove disk store entry for [Class]"- 如何禁用基于磁盘的缓存?