一尘不染

是什么导致java.lang.IncompatibleClassChangeError?

java

我将Java库打包为JAR,java.lang.IncompatibleClassChangeError当我尝试从中调用方法时会抛出很多s。这些错误似乎随机出现。哪些类型的问题可能导致此错误?


阅读 504

收藏
2020-02-26

共1个答案

一尘不染

这意味着你对库进行了一些不兼容的二进制更改,而无需重新编译客户端代码。 Java语言规范§13详细介绍了所有这些更改,最显着的是将static非非私有字段/方法更改为static,反之亦然。

根据新库重新编译客户端代码,你应该一切顺利。

更新:如果发布公共库,则应尽可能避免进行不兼容的二进制更改,以保留所谓的“二进制向后兼容性”。理想情况下,仅更新依赖项jar不会破坏应用程序或构建。如果必须中断二进制的向后兼容性,建议在发布更改之前增加主版本号(例如从1.xy到2.0.0)。

2020-02-26