【问题标题】:grails upgrading 2.4.0 causes Error Compilation error: startup failedgrails 升级 2.4.0 导致 Error Compilation error: startup failed
【发布时间】:2014-07-17 21:39:17
【问题描述】:

我正在尝试从 Grails 2.2.3 升级到 Grails 2.4.0。为此,我遵循了以下步骤:

  1. 使用 GVM,我安装了 grails 2.4.0
  2. 将 grails 默认版本设置为 2.4.0
  3. 然后在我的项目目录中运行命令将 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

【问题讨论】:

    标签: grails upgrade


    【解决方案1】:

    来自 Grails 2.4.0 的持有者类 have been removed。更新到最新的插件版本应该可以解决上面的编译错误。

    如果您发现最新的插件版本不支持 Grails 2.4.0,那么您只需要等到他们发布与 2.4.0 兼容的版本才能升级。

    根据个人经验,我知道以下插件有2.4.0兼容版本:

    • 资源
    • 邮件
    • 石英

    但我不确定 email-confirmation 或 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 发布时间不长,插件作者仍在努力更新他们的代码。

        【讨论】:

          猜你喜欢
          • 2020-04-25
          • 1970-01-01
          • 1970-01-01
          • 2022-12-19
          • 1970-01-01
          • 1970-01-01
          • 2019-09-15
          • 1970-01-01
          • 2021-11-28
          相关资源
          最近更新 更多