【问题标题】:Grails - java.lang.NoSuchMethodError after adding dependency http builderGrails - 添加依赖项http构建器后的java.lang.NoSuchMethodError
【发布时间】:2014-08-29 10:53:40
【问题描述】:

我在跑步

grails 2.2.3

在tomcat6上

当我将 groovy http-buidler 的依赖项添加到我的 build-config.groovy 时

dependencies {
   ...
   runtime 'org.codehaus.groovy.modules.http-builder:http-builder:0.5.0-RC2'
   ...
}

它不会再用以下堆栈编译:

INFO: Initializing Spring root WebApplicationContext
ERROR  error, Full Stack Trace:
java.lang.NoSuchMethodError: org.objectweb.asm.ClassWriter.<init>(Z)V
        at org.codehaus.groovy.runtime.callsite.CallSiteGenerator.compileStaticMethod(CallSiteGenerator.java:231)
        at org.codehaus.groovy.reflection.CachedMethod.createStaticMetaMethodSite(CachedMethod.java:264)
        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.createStaticMetaMethodSite(StaticMetaMethodSite.java:111)
        at groovy.lang.MetaClassImpl.createStaticSite(MetaClassImpl.java:2993)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallStaticSite(CallSiteArray.java:59)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.createCallSite(CallSiteArray.java:144)
        at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:40)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:117)
        at org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:125)
        at org.grails.plugin.resource.CSSRewriterResourceMapper.<clinit>(CSSRewriterResourceMapper.groovy:24)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName0(Native Method)
        at java.lang.Class.forName(Class.java:270)
        at org.codehaus.groovy.grails.commons.GrailsApplicationFactoryBean.afterPropertiesSet(GrailsApplicationFactoryBean.java:79)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.invokeInitMethods(AbstractAutowireCapableBeanFactory.java:1514)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.initializeBean(AbstractAutowireCapableBeanFactory.java:1452)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:519)
        at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:456)
        at org.springframework.beans.factory.support.AbstractBeanFactory$1.getObject(AbstractBeanFactory.java:294)
        at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:225)
        at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:291)
        at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:193)
        at org.springframework.beans.factory.support.DefaultListableBeanFactory.preInstantiateSingletons(DefaultListableBeanFactory.java:589)
        at org.springframework.context.support.AbstractApplicationContext.finishBeanFactoryInitialization(AbstractApplicationContext.java:925)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:472)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:388)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:293)
        at org.codehaus.groovy.grails.web.context.GrailsContextLoader.initWebApplicationContext(GrailsContextLoader.java:69)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:111)
        at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:3972)
        at org.apache.catalina.core.StandardContext.start(StandardContext.java:4467)
        at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:791)
        at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:771)
        at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:526)
        at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:905)
        at org.apache.catalina.startup.HostConfig.deployWARs(HostConfig.java:740)
        at org.apache.catalina.startup.HostConfig.deployApps(HostConfig.java:500)
        at org.apache.catalina.startup.HostConfig.start(HostConfig.java:1277)
        at org.apache.catalina.startup.HostConfig.lifecycleEvent(HostConfig.java:321)
        at org.apache.catalina.util.LifecycleSupport.fireLifecycleEvent(LifecycleSupport.java:119)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1053)
        at org.apache.catalina.core.StandardHost.start(StandardHost.java:722)
        at org.apache.catalina.core.ContainerBase.start(ContainerBase.java:1045)
        at org.apache.catalina.core.StandardEngine.start(StandardEngine.java:443)
        at org.apache.catalina.core.StandardService.start(StandardService.java:516)
        at org.apache.catalina.core.StandardServer.start(StandardServer.java:710)
        at org.apache.catalina.startup.Catalina.start(Catalina.java:593)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:622)
        at org.apache.catalina.startup.Bootstrap.start(Bootstrap.java:289)
        at org.apache.catalina.startup.Bootstrap.main(Bootstrap.java:414)
ERROR  error, Context initialization failed

所以搜索这个问题,发现asm和hibernate不兼容

我追求的是一个简单的解决方案,

我宁愿拥有一个适用于我的设置的依赖项,而不是更新某事。我知道 tomcat6 已经很老了,grails 2.2.3 也不是最新的,但是有什么方法可以在我的设置中使用 groovy http-builder 吗?

任何帮助提前谢谢

【问题讨论】:

    标签: java hibernate grails groovy


    【解决方案1】:

    您的http-builder 似乎很古老。

    我正在使用这个:

    compile 'org.codehaus.groovy.modules.http-builder:http-builder:0.7'
    

    Grails 2.3.* 和 2.2.* 没有问题

    【讨论】:

      【解决方案2】:

      我可以推荐一个优秀的http客户端吗?

      http://grails.org/plugin/jersey-request-builder

      它是由我在 Rackspace 的老队友开发的,在 Jersey 客户端上运行,而且非常易于使用。

      它使用 DSL。例如:

      new RequestBuilder().post {
          uri = "http://www.example.com"
          body = ["foo": "bar"]
          headers = [
              "X-Auth-Key": "1321d980-3ceb-11e3-b872-081196ac8a64"
          ]
      }
      

      有关更多示例,请参阅文档,但是一旦我们有了这个,我们就再也没有使用过 HttpBuilder。

      【讨论】:

      • 看起来很直观,谢谢推荐,我会试试看!现在我把 .openConnection() 和 http-builder 搞得一团糟
      • 如何处理流媒体?
      • 该插件只是 Jersey 客户端的 Groovy 包装器。泽西客户能做的任何事情,它都能做到。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-05-14
      • 2019-10-15
      • 2017-05-29
      • 1970-01-01
      • 2014-12-02
      • 2020-01-30
      • 2018-09-16
      相关资源
      最近更新 更多