Grails 2.0.0.RC3:无法重新加载对控制器的更改,java.lang.NoSuchFieldException:__timeStamp__239_neverHappen1323622798

Posted

技术标签:

【中文标题】Grails 2.0.0.RC3:无法重新加载对控制器的更改,java.lang.NoSuchFieldException:__timeStamp__239_neverHappen1323622798918【英文标题】:Grails 2.0.0.RC3: Could not reload changes to controller, java.lang.NoSuchFieldException: __timeStamp__239_neverHappen1323622798918 【发布时间】:2012-01-17 23:03:00 【问题描述】:

自从我开始评估 Grails 2.0.0.RC3 以来,这个错误最近一直在出现。 我对控制器进行了简单的更改,然后保存。

来自pictureList.count(),它以某种方式在 1.3.7 中有效,但在 2.0.0RC3 中无效

def tagged = 
        def pictureList = Picture.findAllByTag(params.id)
        render(view: 'list', model: [pictureInstanceList:pictureList, 
            tag:params.id, pictureInstanceTotal:pictureList.count()])

pictureList.size() 更有意义,因为pictureList 是ArrayList 类型

def tagged = 
        def pictureList = Picture.findAllByTag(params.id)
        render(view: 'list', model: [pictureInstanceList:pictureList, 
            tag:params.id, pictureInstanceTotal:pictureList.size()])

我收到编译输出消息,让我知道发生了什么。

| Compiling 1 source files
| Compiling 1 source files.
| Compiling 1 source files..
| Compiling 1 source files...

然后我重新加载页面并得到这个。

| Error 2011-12-11 17:00:01,908 [Thread-7] ERROR plugins.AbstractGrailsPluginManager  
- Plugin [controllers:2.0.0.RC3] could not reload changes to file 
[/Users/gotomanners/Documents/Projects/sampleProject/grails-app/controllers/sampleProject/PictureController.groovy]: 
java.lang.NoSuchFieldException: __timeStamp__239_neverHappen1323622798918
Message: java.lang.NoSuchFieldException: __timeStamp__239_neverHappen1323622798918
   Line | Method
->> 632 | doCall in SpringSecurityCoreGrailsPlugin$_closure5
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 
^   680 | run    in java.lang.Thread

Caused by NoSuchFieldException: __timeStamp__239_neverHappen1323622798918
->> 1882 | getDeclaredField in java.lang.Class

现在从错误中恢复的唯一方法(我发现)是重新启动应用程序。

有人遇到过这个问题吗??如果可能的话,我会尝试隔离问题,以便我可以提交错误报告。

我应该补充一点,这个应用程序最初是基于 grails 1.3.7 的,我最近将它升级到 2.0.0RC1,现在升级到 2.0.0RC3

【问题讨论】:

你试过在邮件列表中询问吗? 我在 2.0.0.RC3 中也遇到过这个问题。如果您可以始终如一地重现它,我建议您提交错误报告 【参考方案1】:

您是否使用 Intellij Idea 并使用它运行 grails 应用程序? 如果是这样,您可以尝试 Idea 的issue tracker 提供的这个临时解决方案:

将 enable.groovy.hotswap=false 添加到 /bin/idea.properties 并重启 IDEA。

这为我解决了这个问题

【讨论】:

这是否会阻止重新加载类?如果是这样,这不是一个很大的帮助 - 这个问题是 intelliJ 10 中的一个错误。通过使用 grails 进入命令行、使用上述解决方法或升级到 Intellij 11 来修复它 确认将 enable.groovy.hotswap=false 添加到 /bin/idea.properties 可以防止该问题,并且仍然允许 Grails 动态重新加载更改。很好的解决方法。【参考方案2】:

cntl + alt + G 并在 Intellij Idea 中运行 clean 命令。它必须工作

为我工作

如果这不起作用,请将添加 enable.groovy.hotswap=false 添加到 /bin/idea.properties 然后运行 ​​clean

也有效!!

【讨论】:

以上是关于Grails 2.0.0.RC3:无法重新加载对控制器的更改,java.lang.NoSuchFieldException:__timeStamp__239_neverHappen1323622798的主要内容,如果未能解决你的问题,请参考以下文章

Grails 项目不会自动重新加载

自定义环境中运行应用程序中的 Grails 自动重新加载功能

Grails Spring Security - 会话超时后重新登录时重新加载会话变量

登录Grails:使用Log4j2重新加载外部配置

Grails - grails-spring-security-rest - 无法从 application.yml 加载 jwt 机密

Grails 应用程序无法在 tomcat 上加载