grails v3 - запустить приложение в intellij не удается скомпилировать домен - но bootRun работает - PullRequest
0 голосов
/ 16 января 2019

У меня постоянно возникают проблемы с классами домена grails и с использованием действия запуска в приложении

похоже, что свойства и преобразования домена, похоже, неправильно воспринимают или обрабатывают признаки gorm правильно, и компилятор не работает (возникли проблемы со столбцами без достаточного количества типов данных или произошел сбой начальной загрузки, когда я загружаю значение в свойство, и оно говорит, что свойство не существует и т. д.

по сути, я не могу доверять при использовании приложения Application в среде IDE, и я не знаю, работают ли мои доменные классы или нет.

однако, если я перейду в режим gradle и загрузлю тот же код, он будет успешно скомпилирован и запущен!

У меня было это раньше, и я не знаю, является ли это ошибкой Grails или проблемой intellij с проектами Grails

когда я щелкаю правой кнопкой мыши по Приложению и запускаю командный терминал, он работает так:

"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

однако у этого класса домена это свойство действительно есть - см. Ниже

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
    }
}

так что вы тратите часы, пытаясь разобраться в ложных проблемах в вашем коде, щелкнув правой кнопкой мыши на приложении.

я вынужден использовать grails bootRun - который в этом случае прекрасно запускает приложение

вы теряете некоторые детали при работе таким образом, поскольку трассировка стека для ошибок компиляции не так ясна.

кто-нибудь еще имел эту проблему с чертами gorm, обрабатывающими доменные объекты в intellij. Кроме того, как я могу «исправить» действие запуска приложения, чтобы запустить все правильные поведения, как это делает bootRun?

1 Ответ

0 голосов
/ 24 января 2019

Ответ Майка У, представленный ниже, кажется самым простым. когда вы входите в intellij и редактируете свои доменные модели, кажется, что вы запутались, и приложение не скомпилируется, как ожидалось.

, так что если bootRun работает, но запуск приложения из IDE не выполняется, то, похоже, эта настройка возвращает мысли в устойчивое состояние.

если вы вносите изменения в модели вашего домена, щелкните правой кнопкой мыши папку домена. затем нажмите «восстановить» по умолчанию примерно на полпути вниз по меню. Дождитесь завершения, затем снова запустите экземпляр приложения, щелкнув правой кнопкой мыши «RunApplication» в меню, и приложение должно успешно запуститься (или с отладкой) из IDE

Это самый простой ответ и дает лучший отзыв разработчику с минимальными дополнительными действиями по перестройке remmeber.

спасибо, Майк.

Для команды Grails с плагином intellij - это проблема в плагине?

...