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
Ответы
Ответ 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 не очень длинный, и авторы плагинов все еще работают над обновлением своего кода.