我多次遇到这个问题:有时当我命令:grails run-app 时,编译器只是一次又一次地运行,即使在那之后我什么也没做。它看起来像:
Running Grails application..
Server running. Browse to http://localhost:8080/LiningTest
[groovyc] Compiling 1 source file to E:\workspace\W1\LiningTest\target\classes
[groovyc] Compiling 2 source files to E:\workspace\W1\LiningTest\target\classe
s
[delete] Deleting directory C:\Documents and Settings\Long\.grails\1.3.6\proj
ects\LiningTest\tomcat
Running Grails application..
Server running. Browse to http://localhost:8080/LiningTest
[groovyc] Compiling 1 source file to E:\workspace\W1\LiningTest\target\classes
[groovyc] Compiling 2 source files to E:\workspace\W1\LiningTest\target\classe
s
[delete] Deleting directory C:\Documents and Settings\Long\.grails\1.3.6\proj
ects\LiningTest\tomcat
Running Grails application..
Server running. Browse to http://localhost:8080/LiningTest
[groovyc] Compiling 1 source file to E:\workspace\W1\LiningTest\target\classes
...
“Server running”时编译成功,但随后自动重新编译了一些文件(不知道是哪个文件),再次运行,然后重新编译...
当我遇到语法错误时,我曾经遇到过这个问题
constraint {
number(min:0.50) // the right way is "min: 0..50"
}
问题是为什么会出现这个问题,以及如何找到问题的原因。 (我想我在某处错过了一些逗号/点,但现在很难找到,因为没有错误消息!)
UPDATE:现在我看到问题是我在 src/groovy 中放置非域类时没有遵循文件夹结构规则。
最佳答案
首先要做的是运行:
grails compile -verboseCompile
这至少会告诉你有问题的文件是什么。
显然这可能发生在
- 包名与文件所在的目录(在您的源根目录下)不匹配。
- 类名与文件名不同。
看看这个: http://www.pubbs.net/201007/grails/58100-grails-user-groovyc-causing-grails-to-loop-.html
Peter Ledbrook 上周(29:20)在 Groovy & Grails Exchange 的演讲中提到了这一点: http://skillsmatter.com/podcast/java-jee/talk-by-peter-ledbrook
关于Grails 编译器不断运行,可能是因为语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4515578/