我对我的应用程序进行了各种小的更改,并且在某些时候,grails应用服务器决定它需要重新启动一遍又一遍。
其他人都看到过这种疯狂行为。我无法真正上传我的整个应用程序作为示例。我不知道我做了什么。我没有进行任何配置更改或插件更改。
我正在使用grails 1.2。
- 当我写这封电子邮件时,我再次尝试了,我的行为略有不同。
它会重新启动应用程序,并显示它正在编译1源文件并继续重新编译一条消息。
答案 0 :(得分:12)
不确定这是不是你的问题,但是当你的某个类名或包有一些小错误时,我发现这样的事情,比如你在目录org.grails中有一个包org.grails.plugin包含.foo。由于某种原因导致重新编译。
为了捕获一些错误,我修改了我的GRAILS_HOME \ scripts_GrailsCompile.groovy,使其打印出正在编译的文件。
修改:
搜索ant.groovyc并为参数添加listfiles:“yes”。
示例:
ant.groovyc(destdir:classesDirPath,
classpathref:classpathId,
listfiles:"yes",
encoding:"UTF-8",
compilerPaths.curry(classpathId, false)
)
这样,如果您看到完全相同的文件不断重新编译,您就知道在哪里查看。
答案 1 :(得分:3)
非常感谢kdj指出未来的时间戳也会导致连续重启错误。
因此,至少有两种方式可以实现连续重启 1)包名称与文件夹结构不匹配 2)一个或多个类文件具有相对于服务器日期的未来时间戳
在我的情况下,在DST转换期间我的开发盒上发生了奇怪的事情,并且某些生成的类文件的时间戳在将来的2天内设置。
答案 2 :(得分:3)
我知道这是一个老问题,但我遇到了同样的问题。启动grails应用程序会导致它一遍又一遍地重新编译。我的问题与Groovy类文件的名称有关,该文件与文件中类的名称不匹配。代码很好,但名字不同。一旦我更改了名称以使它们同步,问题就解决了。要建立在已接受的答案上,您可以使用:
grails run-app -verboseCompile
使grails在反复编译时打印出有问题的脚本/类文件。它引导我进入违规模块。如果查看脚本'GRAILS_HOME \ scripts_GrailsCompile.groovy`,您可以看到他们将此选项放置到位,以便您可以在启动时覆盖该值。如果可以提供帮助,您可能不想修改原件(如原始的,已接受的答案)。
这是在grails 1.3.7中完成的。
答案 3 :(得分:1)
如果grails在开发模式下运行,并且源代码在远程文件系统上,并且远程文件服务器将来有时间设置,那么这就是你将得到的。
答案 4 :(得分:0)
我遇到了同样的问题,两件不同的事情为我解决了。一个是简单地重启系统而另一个是运行grails run-app。详细编译没有显示我的项目有任何问题。
答案 5 :(得分:0)
另外,请确保您的fileName.groovy
与className
匹配。
我从另一个项目中复制了一些代码并遇到了这种情况。