Подтвердить что ты не робот

Grails upgrade 2.4.0 вызывает ошибку компиляции ошибки: запуск невозможен

Я пытаюсь перейти с Grails 2.2.3 на Grails 2.4.0. Для этого я выполнил следующие шаги:

  • используя GVM, я установил grails 2.4.0
  • установить версию версии Grails по умолчанию до версии 2.4.0
  • затем выполните команду set-grails-version до 2.4.0 в моей директории проектов а также затем обновить java для использования oracle jdk 7

Я получаю следующую ошибку. Любое предложение почему?

Error Compilation error: startup failed:
/home/madan/.grails/2.4.0/projects/mainthub/plugins/mail-1.0/src/groovy/grails/plugin/mail/MailMessageContentRenderer.groovy: 21: unable to resolve class org.codehaus.groovy.grails.plugins.PluginManagerHolder
 @ line 21, column 1.
   import org.codehaus.groovy.grails.plugins.PluginManagerHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/resources-1.2/grails-app/taglib/org/grails/plugin/resource/ResourceTagLib.groovy: 6: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 6, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/resources-1.2/src/groovy/org/grails/plugin/resource/ResourceProcessor.groovy: 6: unable to resolve class org.codehaus.groovy.grails.plugins.PluginManagerHolder
 @ line 6, column 1.
   import org.codehaus.groovy.grails.plugins.PluginManagerHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/resources-1.2/src/groovy/org/grails/plugin/resource/util/HalfBakedLegacyLinkGenerator.groovy: 3: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 3, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/joda-time-1.4/grails-app/taglib/grails/plugin/jodatime/taglib/PeriodTagLib.groovy: 18: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 18, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/email-confirmation-2.0.8/grails-app/services/com/grailsrocks/emailconfirmation/EmailConfirmationService.groovy: 24: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 24, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/email-confirmation-2.0.8/grails-app/services/com/grailsrocks/emailconfirmation/EmailConfirmationService.groovy: 25: unable to resolve class org.codehaus.groovy.grails.commons.ApplicationHolder
 @ line 25, column 1.
   import org.codehaus.groovy.grails.commons.ApplicationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/quartz-1.0-RC2/grails-app/conf/QuartzBootStrap.groovy: 18: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 18, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/quartz-1.0-RC2/grails-app/conf/QuartzBootStrap.groovy: 31: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder 
 @ line 31, column 12.
           if(ConfigurationHolder.config?.quartz?.autoStartup) quartzScheduler.start()
              ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/joda-time-1.4/src/groovy/grails/plugin/jodatime/binding/DateTimeEditor.groovy: 20: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder
 @ line 20, column 1.
   import org.codehaus.groovy.grails.commons.ConfigurationHolder
   ^

/home/madan/.grails/2.4.0/projects/mainthub/plugins/joda-time-1.4/src/groovy/grails/plugin/jodatime/binding/DateTimeEditor.groovy: 30: unable to resolve class org.codehaus.groovy.grails.commons.ConfigurationHolder 
 @ line 30, column 38.
    @Lazy private ConfigObject config = ConfigurationHolder.config?.jodatime?.format
                                        ^

11 errors
4b9b3361

Ответ 1

Классы держателей были удалены из Grails 2.4.0. Обновление до последних версий плагинов должно устранить ошибки компиляции выше.

Если вы обнаружите, что самые последние версии плагинов не поддерживают Grails 2.4.0, вам просто нужно подождать, пока они не выпустят версию, совместимую с 2.4.0, прежде чем вы сможете ее обновить.

Из личного опыта я знаю, что следующие плагины имеют совместимые версии 2.4.0:

  • Ресурсы
  • почта
  • кварц

Но я не уверен насчет подтверждения по электронной почте или joda-time

Ответ 2

Из Grails 2.4.x были удалены следующие устаревшие классы:

org.codehaus.groovy.grails.commons.ApplicationHolder
org.codehaus.groovy.grails.commons.ConfigurationHolder
org.codehaus.groovy.grails.plugins.PluginManagerHolder
org.codehaus.groovy.grails.web.context.ServletContextHolder
org.codehaus.groovy.grails.compiler.support.GrailsResourceLoaderHolder

Если вы или любые плагины, которые вы установили, используют эти классы, вы получите ошибку компиляции. Проблема может быть устранена путем обновления до новых плагинов и использования grails.util.Holders.

Например

application = org.codehaus.groovy.grails.commons.ApplicationHolder.application 

к

application = Holders.grailsApplication

Ответ 3

Я думаю: "quartz: 1.0.1" и ": resources: 1.2.8" совместимы с 2.4. Насколько я знаю, другие плагины, с которыми вы столкнулись, пока не имеют совместимых с 2.4 релизов. 2.4 не очень длинный, и авторы плагинов все еще работают над обновлением своего кода.