似乎grails会自动重新编译我的gsp页面,但不会重新编译我的控制器。它以前用于grails的早期版本。知道我能找什么吗?在osx snow leopard上使用Grails2.1.0。注意:这与本期类似
gc0ot86w1#
奇怪,我从来没有遇到过这样的问题。你确定你的控制器编译正确,没有错别字吗?我发现通常只需要一两秒钟就能看到控制器中反映的变化。域对象的更改需要重新启动(它们通常会擦除保存的数据),我发现有时对spring管理的资源(如注入的服务)的更改是不需要的。但是控制器和gsp页面97%的时间会重新编译:)我介于ggts(eclipse)和命令行run应用程序之间,它几乎总是适合我。你在做什么缓存吗?我在lion上运行jdk1.6,grails2.1.1通常你会看到输出告诉你一个文件在点击save后的一两秒钟内被重新编译。
bz4sfanl2#
当我有一个从中派生其他控制器的basecontroller类时,我遇到了这个问题。如果我对basecontroller类进行更改,例如添加方法或闭包、更改方法名称、导入一些类等,grails中的整个类重新加载功能将完全停止。唯一对我有效的解决方案是删除所有类编译到的目标目录。至少这样我就不必每次都重新启动服务器,这样我就不用等待30秒来显示起始页了。当类重新加载特性不能像预期的那样工作时,这可能会很烦人。grails的自动重新加载特性并非没有怪癖。其中一些怪癖最终与java以及类加载在servlet容器环境中的工作方式有关。我希望grails团队将优先考虑像其他脚本环境(ruby、php、python或play framework)一样为grails提供无缝的类重新加载,因为这个框架的其他一些方面很容易处理。
qyyhg6bp3#
免责声明:在我的mac上,自动重新加载一直对我有效。我发现了一些有用的东西。首先,运行一个自定义环境(不是dev)会禁用自动重载(请参阅stackoverflow文章),因此如果您以这种方式运行应用程序,您需要遵循该文章中的说明。第二,如果你以战争的方式运行这个应用程序,一定要关闭自动重新加载(请参见grails自动重新加载页面)第三,我发现使用grailside(比如intellij或springsource)确实为grails开发环境增加了很多稳定性。例如,intellij不使用二进制下载附带的grailsshell文件。它手动调用grails jar和引导。我的问题是:你周围的环境是什么样子的?如何运行应用程序(运行应用程序或其他容器)?您安装了哪些grails插件(grails文档中说tomcat插件配置为最佳自动重新加载)?您的计算机上是否下载了其他grails二进制文件(在尝试加载时可能会造成混乱)?最后,您是否能够在干净的环境中重现这个问题(意味着新的grails二进制文件、新的grails create应用程序)?我还建议您阅读grails文档的部署部分(可以在这里找到)。它有一些关于重新加载的相关信息。我为冗长且可能无法回答的回答道歉,但我希望这引发了一两个想法。告诉我事情的结果!
ve7v8dk24#
如果控制器上的包名称命名不正确(如文件夹结构与包声明不一致),应用程序仍将运行,不会报告任何错误,但自动重新加载将不起作用。
4条答案
按热度按时间gc0ot86w1#
奇怪,我从来没有遇到过这样的问题。你确定你的控制器编译正确,没有错别字吗?我发现通常只需要一两秒钟就能看到控制器中反映的变化。域对象的更改需要重新启动(它们通常会擦除保存的数据),我发现有时对spring管理的资源(如注入的服务)的更改是不需要的。但是控制器和gsp页面97%的时间会重新编译:)
我介于ggts(eclipse)和命令行run应用程序之间,它几乎总是适合我。你在做什么缓存吗?我在lion上运行jdk1.6,grails2.1.1
通常你会看到输出告诉你一个文件在点击save后的一两秒钟内被重新编译。
bz4sfanl2#
当我有一个从中派生其他控制器的basecontroller类时,我遇到了这个问题。如果我对basecontroller类进行更改,例如添加方法或闭包、更改方法名称、导入一些类等,grails中的整个类重新加载功能将完全停止。
唯一对我有效的解决方案是删除所有类编译到的目标目录。至少这样我就不必每次都重新启动服务器,这样我就不用等待30秒来显示起始页了。当类重新加载特性不能像预期的那样工作时,这可能会很烦人。
grails的自动重新加载特性并非没有怪癖。其中一些怪癖最终与java以及类加载在servlet容器环境中的工作方式有关。我希望grails团队将优先考虑像其他脚本环境(ruby、php、python或play framework)一样为grails提供无缝的类重新加载,因为这个框架的其他一些方面很容易处理。
qyyhg6bp3#
免责声明:在我的mac上,自动重新加载一直对我有效。
我发现了一些有用的东西。
首先,运行一个自定义环境(不是dev)会禁用自动重载(请参阅stackoverflow文章),因此如果您以这种方式运行应用程序,您需要遵循该文章中的说明。
第二,如果你以战争的方式运行这个应用程序,一定要关闭自动重新加载(请参见grails自动重新加载页面)
第三,我发现使用grailside(比如intellij或springsource)确实为grails开发环境增加了很多稳定性。例如,intellij不使用二进制下载附带的grailsshell文件。它手动调用grails jar和引导。
我的问题是:
你周围的环境是什么样子的?如何运行应用程序(运行应用程序或其他容器)?
您安装了哪些grails插件(grails文档中说tomcat插件配置为最佳自动重新加载)?
您的计算机上是否下载了其他grails二进制文件(在尝试加载时可能会造成混乱)?
最后,您是否能够在干净的环境中重现这个问题(意味着新的grails二进制文件、新的grails create应用程序)?
我还建议您阅读grails文档的部署部分(可以在这里找到)。它有一些关于重新加载的相关信息。
我为冗长且可能无法回答的回答道歉,但我希望这引发了一两个想法。告诉我事情的结果!
ve7v8dk24#
如果控制器上的包名称命名不正确(如文件夹结构与包声明不一致),应用程序仍将运行,不会报告任何错误,但自动重新加载将不起作用。