spring4.1 jrebel debug启动出错?

limaofeng 发布于 2014/09/14 22:09
阅读 1K+
收藏 0

收藏!数据建模最全知识体系解读!>>>

spring4.1 jrebel 集成时出现如下错误。
java.lang.VerifyError: (class: org/springframework/context/annotation/ConfigurationClassEnhancer$BeanMethodInterceptor, method: intercept signature: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;) Incompatible argument to function
	at org.springframework.context.annotation.ConfigurationClassEnhancer.<clinit>(ConfigurationClassEnhancer.java:61)

错误显示 ConfigurationClassEnhancer$BeanMethodInterceptor 方法 intercept 有问题。

注意这个

method: intercept signature: (Ljava/lang/Object;Ljava/lang/reflect/Method;[Ljava/lang/Object;Lorg/springframework/cglib/proxy/MethodProxy;)Ljava/lang/Object;)
源码中的方法
@Override
        public Object intercept(Object enhancedConfigInstance, Method beanMethod, Object[] beanMethodArgs,MethodProxy cglibMethodProxy) throws Throwable {



发现与错误提示不符。为什么jrebel debug时,会找一个不存在的方法勒。

所以我将源代码提取出来,添加了如下方法

        public Object intercept(Object[] enhancedConfigInstance, Method[] beanMethod, Object[] beanMethodArgs,MethodProxy[] cglibMethodProxy) throws Throwable {
            return null;
        }



然后重新启动。就没问题了。

但引起这个问题的原因是什么,还是不知道。而且这个解决有点不妥。因为重新打包spring-context.jar了。而且看来也不是spring本身的问题。因为不用jrebel是不会错误的。

所以想来是不是jrebel中对spring的支持是不是有什么问题。又或者是我本地环境中的jrebel有问题。


加载中
0
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
请用新版的jrebel,5.5.0以上才支持spring4,最好用最新版的
limaofeng
limaofeng
回复 @愚蠢的人类 : 我也是 idea , 我只用junit 测试的话 new ConfigurationClassEnhancer() ,用jrebel debug 就会出错。普通 debug 就没问题。
实迷途其未远觉今是而昨非
实迷途其未远觉今是而昨非
回复 @limaofeng : 你是怎么安装的,我用idea插件可以的,插件和jrebel文件有没有同时更新
limaofeng
limaofeng
JRebel 5.6.3 (201409050929) 应该是最新的。难道还有其他的什么配置不成
0
分流砥柱
分流砥柱
楼上回答的对哦。
0
仁清烨媛
仁清烨媛
问题搞定,呵呵
返回顶部
顶部