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

标签 intellij-idea grails gorm

我不断遇到Grails域类问题,并在Application上使用run action

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

从本质上讲,我不信任在IDE中使用Application上运行的程序,而且我也不知道我的域类是否正常工作。

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

我以前有过这个,不知道Grails项目是grails失败还是Intellij问题。

当我右键单击“应用程序”并运行时,命令终端显示它正在像这样运行

"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

在我的最新迭代中,这会在 bootstrap 上引发编译错误(与域类错误相反)
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

但是,该域类绝对具有该属性-参见下文
class MaintenanceAgreement extends Agreement {

    String level
    Map category = [:]  //p1 to p5 and sla details 

    //static belongsTo = [serviceProvider : OrgRoleInstance, maintainer: OrgRoleInstance]

    // implemented as unidirectional many to one !  mag point to org
    static belongsTo = [maintainer: OrgRoleInstance]

    static constraints = {
        level nullable:false
        //serviceProvider nullable:true
        maintainer nullable:false   //ref to maintainer party

        category nullable:false
    }
}

因此,您需要花费数小时来尝试使用Application上的右键/运行来对代码中的虚假问题进行排序。

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

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

在Intellij中处理域对象的gorm特性有没有其他人遇到这个问题?而且,如何像bootRun一样“修复”应用程序运行 Action 以触发所有正确的行为?

最佳答案

Mike W的答案似乎是最简单的解决方法。当您使用IntelliJ并编辑域模型时,似乎会感到困惑,并且应用程序将无法按预期进行编译/运行。
因此,如果bootRun可以工作,但不能从IDE运行应用程序,则进行此调整似乎会使事情回到稳定状态。
如果您对域模型进行编辑,请右键单击域文件夹。然后在菜单下方大约一半处单击重建“默认”。等待直到完成,然后通过右键单击菜单中的RunApplication <main>再次运行您的应用程序实例,该应用程序应在IDE中成功启动(或通过调试)。
这是最简单的答案,可以以最少的额外重建 Action 来记住,从而为开发人员提供最佳反馈。

关于intellij-idea - 在Intellij中运行应用程序无法编译域-但是bootRun可以工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54213401/

相关文章:

grails - Requestmap无法按预期运行

grails - Groovy控制台无法 “remember”任何变量-总是说 “unknown property”

hibernate - 如何在grails createCriteria()中编写条件

intellij-idea - 通过Gradle构建获取oozie-client依赖性

spring - 我们在哪个文件中添加gradle的依赖关系?就像使用maven一样,我们可以在pom.xml中添加依赖项

java - 更改 EJB 类对话框 - 未找到

authentication - Grails应用中来自Shiro安全性AuthController的ERR_TOO_MANY_REDIRECTS

intellij-idea - IntelliJ IDEA 中 Diff 文件的语法荧光笔

grails - Criteria查询中的Grails LazyClob

hibernate - Grails 3刷新 hibernate session 导致NullPointerException