Grails v3-在intellij中运行应用程序无法编译域-但bootRun可以工作

时间:2019-01-16 08:57:29

标签: intellij-idea grails gorm

我不断遇到grails域类问题,并在Application上使用运行操作

似乎域特征和转换似乎没有正确地拾取或处理gorm特征,并且编译器失败(当我将值加载到属性中时,没有足够类型数据的列出现问题或引导失败)不存在等

基本上,我不能相信在IDE中使用Application上的运行,而且我也不知道我的域类是否正常工作。

但是,如果我进入gradle视图并'bootRun'相同的代码,它将编译并成功运行!

我以前有过,我不知道这是grails失败还是grails项目出现intellij问题

当我右键单击“应用程序”并运行命令终端时,它将显示其运行情况

forfiles /?

在我的最新迭代中,使用

会在引导程序上引发编译错误(与域类错误相反)
"D:\Program Files\Java\jdk1.8.0_181\bin\java.exe" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\lib\idea_rt.jar=7620:C:\Program Files\JetBrains\IntelliJ IDEA 2018.3\bin" -Dfile.encoding=UTF-8 -classpath C:\Users\willw\AppData\Local\Temp\classpath1951982944.jar lcm.network.app.Application

但是该域类绝对具有该属性-见下文

groovy.lang.MissingPropertyException: No such property: maintainer for class: com.softwood.domain.MaintenanceAgreement
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.unwrap(ScriptBytecodeAdapter.java:66)
    at org.codehaus.groovy.runtime.ScriptBytecodeAdapter.setGroovyObjectProperty(ScriptBytecodeAdapter.java:547)
    at lcm.network.app.BootStrap$_closure1.doCall(BootStrap.groovy:37)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:98)
    at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:325)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:264)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1099)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1034)
    at groovy.lang.Closure.call(Closure.java:418)
    at groovy.lang.Closure.call(Closure.java:412)
    at grails.util.Environment.evaluateEnvironmentSpecificBlock(Environment.java:541)
    at g

因此,您需要花费数小时来尝试在应用程序上单击鼠标右键/ run来对代码中的虚假问题进行排序。

我不得不使用grails bootRun-在这种情况下,它可以很好地运行应用程序

以这种方式工作时,您会松散一些细节,因为编译错误的堆栈跟踪不太清楚。

其他任何人在处理intellij中的域特征时都遇到了这个问题。而且,我如何“修复”应用程序运行操作以启动bootRun似乎可以执行的所有正确行为?

1 个答案:

答案 0 :(得分:0)

下面是迈克W的答案,这似乎是最简单的解决方法。当您使用intellij并编辑域模型时,似乎会感到困惑,并且应用程序将无法按预期编译。

因此,如果bootRun正常运行,那么从IDE中对正在运行的应用程序进行打扰将无法使这种调整恢复到稳定状态。

如果您对域模型进行编辑,请右键单击域文件夹。然后在菜单下方大约一半处点击重建“默认”。等待完成,然后右键单击菜单中的“ RunApplication”再次运行您的应用程序实例,该应用程序应从IDE内成功启动(或通过调试)

这是最简单的答案,并且以最小的额外重建操作来提醒开发人员最佳的反馈。

感谢Mike W。

对于具有intellij插件的grails团队-这个问题是插件中的错误吗?