【问题标题】:Grails ReloadingException when changing a service method's name更改服务方法的名称时出现 Grails ReloadingException
【发布时间】:2014-09-13 04:39:36
【问题描述】:

我正在使用 Grails 2.3.8

当我在服务类中更改方法的名称并尝试调用它时,我收到类似以下的错误:

org.springsource.loaded.ReloadException: ReloadableType.determineDispatcher(): expected com.SomeService$$EnhancerBySpringCGLIB$$a85275cb to be reloadable

现在我猜这是因为实际的服务类被包裹在 spring 的“增强器”中,这在某种程度上使它无法重新加载,但我不确定为什么,我还没有找到任何相关信息。

是否有解决方法,或者我是否必须在更改方法名称时重新启动应用程序?

【问题讨论】:

    标签: grails spring-loaded


    【解决方案1】:

    要修复 grails 控制台中的可重新加载警告,请执行以下步骤:

    1. 从这里下载 springloaded-1.2.0:http://search.maven.org/remotecontent?filepath=org/springframework/springloaded/1.2.0.RELEASE/springloaded-1.2.0.RELEASE.jar
    2. 将此 jar 复制到 grails-2.3.7/lib/org.springframework/springloaded/jars
    3. 编辑 grails-2.3.7/bin/startGrails 文件,搜索 AGENT_STRING 并将 AGENT_STRING 更改为指向它而不是发行版中包含的 1.1.5。它应该是这样的:

      设置 AGENT_STRING=-javaagent:"%GRAILS_HOME:\=/%/lib/org.springframework/springloaded/jars/springloaded-1.2.0.RELEASE.jar" -noverify -Dspringloaded=\"%SPRINGLOADED_PARAMS%\"

    4. 重启 grails

    【讨论】:

    • 这很有趣。它按预期工作,但引发以下错误:Plugin [services:2.3.8] could not reload changes to file [/SomeService.groovy]: Cannot get property 'cacheOperationSource' on null object [ERROR][org.codehaus.groovy.grails.plugins.AbstractGrailsPluginManager]
    【解决方案2】:

    在 Grails 2.3 中,使用 grails 命令启用重新加载:

    grails -reloading run-app
    

    或者你可以设置

    grails.reload.enabled = true
    

    在 BuildConfig.groovy 中

    这两种方法都不完美。更多参考请看这里:

    https://grails.org/Auto+Reloading

    Grails 2.3.0 Auto-reloading not working

    【讨论】:

    • 我启用了重新加载,它在大多数情况下都有效。我还注意到文档中关于 typed vs untyped injection 的评论,我都尝试过,但都没有成功。
    猜你喜欢
    • 1970-01-01
    • 2018-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-04
    • 2016-05-03
    相关资源
    最近更新 更多