Dubbo: 使用dubbo2.5.4出现compile error: getPropertyValue (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; in com.alibaba.dubbo.common.bytecode.Wrapper6: inc onsistent stack height 5

Created on 19 Jul 2016  ·  7Comments  ·  Source: apache/dubbo

 2016-07-19 18:20:25,494 ERROR [org.springframework.web.context.ContextLoader] -Context initialization failed
 java.lang.RuntimeException: [source error] getPropertyValue (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; in com.alibaba.dubbo.common.byte
code.Wrapper6: inconsistent stack height 5
        at com.alibaba.dubbo.common.bytecode.ClassGenerator.toClass(ClassGenerator.java:354)
        at com.alibaba.dubbo.common.bytecode.ClassGenerator.toClass(ClassGenerator.java:293)
        at com.alibaba.dubbo.common.bytecode.Wrapper.makeWrapper(Wrapper.java:346)
        at com.alibaba.dubbo.common.bytecode.Wrapper.getWrapper(Wrapper.java:89)
        at com.alibaba.dubbo.config.ServiceConfig.doExportUrlsFor1Protocol(ServiceConfig.java:429)
        at com.alibaba.dubbo.config.ServiceConfig.doExportUrls(ServiceConfig.java:284)
        at com.alibaba.dubbo.config.ServiceConfig.doExport(ServiceConfig.java:245)
        at com.alibaba.dubbo.config.ServiceConfig.export(ServiceConfig.java:144)
        at com.alibaba.dubbo.config.spring.ServiceBean.onApplicationEvent(ServiceBean.java:109)
        at org.springframework.context.event.SimpleApplicationEventMulticaster.multicastEvent(SimpleApplicationEventMulticaster.java:96)
        at org.springframework.context.support.AbstractApplicationContext.publishEvent(AbstractApplicationContext.java:334)
        at org.springframework.context.support.AbstractApplicationContext.finishRefresh(AbstractApplicationContext.java:950)
        at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:482)
        at org.springframework.web.context.ContextLoader.configureAndRefreshWebApplicationContext(ContextLoader.java:410)
        at org.springframework.web.context.ContextLoader.initWebApplicationContext(ContextLoader.java:306)
        at org.springframework.web.context.ContextLoaderListener.contextInitialized(ContextLoaderListener.java:112)
        at com.caucho.server.webapp.WebApp.addListenerObject(WebApp.java:2153)
        at com.caucho.server.webapp.WebApp.callInitializers(WebApp.java:3482)
        at com.caucho.server.webapp.WebApp.startImpl(WebApp.java:3787)
        at com.caucho.server.webapp.WebApp.access$700(WebApp.java:208)
        at com.caucho.server.webapp.WebApp$StartupTask.run(WebApp.java:5317)
        at com.caucho.env.thread2.ResinThread2.runTasks(ResinThread2.java:173)
        at com.caucho.env.thread2.ResinThread2.run(ResinThread2.java:118)
Caused by: javassist.CannotCompileException: [source error] getPropertyValue (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; in com.alibaba.d
ubbo.common.bytecode.Wrapper6: inconsistent stack height 5
        at javassist.CtNewMethod.make(CtNewMethod.java:79)
        at javassist.CtNewMethod.make(CtNewMethod.java:45)
        at com.alibaba.dubbo.common.bytecode.ClassGenerator.toClass(ClassGenerator.java:322)
        ... 22 more
Caused by: compile error: getPropertyValue (Ljava/lang/Object;Ljava/lang/String;)Ljava/lang/Object; in com.alibaba.dubbo.common.bytecode.Wrapper6: inc
onsistent stack height 5
        at javassist.compiler.Javac.compile(Javac.java:104)
        at javassist.CtNewMethod.make(CtNewMethod.java:74)
        ... 24 more
typbug

Most helpful comment

我调整了配置,然后我的jdk是1.7的,dubbo是1.6的,有冲突就没用,我排查了这个接口的所有方法, 我发现在Impl里的方法必须带入参,加入了参数,就没有这个问题了,完美启动

All 7 comments

和字节码生成相关,上面的信息还不方便排查是什么原因引起。
PS: http://stackoverflow.com/questions/20038523/what-causes-this-error-java-lang-verifyerror-inconsistent-stack-height-2-1

一个简单解决方法是,把proxy改成用jdk的实现:

javassist.jar 字节码生成。
如果<dubbo:provider proxy="jdk" />或<dubbo:consumer proxy="jdk" />,以及<dubbo:application compiler="jdk" />,则不需要。

详见 User Guide http://dubbo.io/User+Guide-zh.htm

谢谢

我调整了配置,然后我的jdk是1.7的,dubbo是1.6的,有冲突就没用,我排查了这个接口的所有方法, 我发现在Impl里的方法必须带入参,加入了参数,就没有这个问题了,完美启动

Dubbo:2.5.3,遇到类似错误,Debug发现是某个Service与其实现类不一致,引用老的JAR包,导致老的实现类未实现当前接口的方法引起报错。对于这个问题,Dubbo输出的错误信息还不够完整,没法一眼看出问题在哪里。

我也遇到这个问题了,2.5.3的版本,请问service和实现类不一致是什么意思?

XxxService为Dubbo服务,XxxServiceImpl是XxxService的实现类。在本地开发某个版本,对XxxService声明的接口做了调整,前后方法签名不一样。服务提供方的其它项目模块引用老的JAR版本(xxx-provider-1.0.2-SNAPSHOT -> xxx-api-1.0.1,正确:xxx-provider-1.0.2-SNAPSHOT -> xxx-api-1.0.2-SNAPSHOT),引起两边不一致。这样解释说明白了没? @programmeres

245, check if this issue the same with yours.

Was this page helpful?
0 / 5 - 0 ratings