我将 Java 库打包为 JAR,java.lang.IncompatibleClassChangeError当我尝试从中调用方法时,它会抛出很多 s。这些错误似乎是随机出现的。什么样的问题可能导致此错误?
java.lang.IncompatibleClassChangeError
这意味着您在没有重新编译客户端代码的情况下对库进行了一些不兼容的二进制更改。 Java 语言规范拥抱 13详细介绍了所有此类更改,最突出的是,将static非非私有字段/方法更改为static,反之亦然。
static
针对新库重新编译客户端代码,您应该一切顺利。
更新:如果您发布公共库,则应尽可能避免进行不兼容的二进制更改,以保留所谓的“二进制向后兼容性”。理想情况下,单独更新依赖项 jar 不应破坏应用程序或构建。如果您确实必须破坏二进制向后兼容性,建议在发布更改之前增加主要版本号(例如从 1.xy 到 2.0.0)。