我在库中的接口中更改了一个方法的返回类型.以前它是无效的,我修改它以返回一个对象.我没有更改模块中的代码,因为我不想对返回的对象做任何事情(它是针对不同的模块)我使用新的库jar编译我的模块并运行单元测试,但是当我按下时jar与库jar一起生产并运行模块,我得到java.lang.NoSuchMethodError为我在界面上更改的方法.我修改了界面以及实现,两者都在库jar中,我使用spring注释在我的模块中注入实现对象.这个问题的可能原因是什么?
听起来你没有重新编译所有内容,或者没有将所有重新编译的jar文件推送到prod.
此外,您没有指定是否重新启动服务器.如果您正在进行某种"热启动",则必须非常仔细地配置所有类加载器以使其正确.如果您可以完全重启容器,这可能会有所帮助.
在Java字节码中,方法的返回类型是方法签名的一部分,它区分具有相同名称和相同参数的两个方法(这是您在Java语言中无法做到的事情).所以你的代码以某种方式调用这个方法没有被重新编译,它仍然试图调用返回void的方法.