expected static method

在不重启服务的情况下,将非静态方法改为静态方法导致Java报IncompatibleClassChangeError。问题源于Spring在启动时扫描并缓存了方法,修改访问权限需重启以更新容器中的方法定义。解决方案是重新启动服务。
摘要由CSDN通过智能技术生成

问题描述:

今天在测试代码时,把一个类中的方法修改成了static方法(系统没有重启,因为在配置文件里面设置的是实时编译),然后在其他方法中调用这个static方法时后台报错: java.lang.IncompatibleClassChangeError: expected static method GwkController.toTitle()......查看编译过后的文件,发现文件编译正常,所修改的方法也被编译成了static方法,查看源代码+猜测:(spring在项目启动时会扫描指定的文件,然后把扫描过的文件中的方法放入到spring容器中,而在代码修改时则可以自动进行容器中的代码随着改变,而容器中方法的访问范围则不可随着改变,若要改变方法的访问范围则需要进行容器中方法的重新加载,比如你在Controller中重新添加一个新的方法然后去访问,则访问不到需要重新启动才可以,而如果修改方法中的代码,则可以生效,所以才出现这个问题,若有大佬知道原因,跪求解答

解决办法:

重新启动服务,然后再进行运行测试,问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值