我将 Java 库打包为 JAR,当我尝试从中调用方法时,它会抛出许多 java.lang.IncompatibleClassChangeError
。这些错误似乎是随机出现的。什么样的问题可能导致此错误?
最佳答案
这意味着您在没有重新编译客户端代码的情况下对库进行了一些不兼容的二进制更改。 Java Language Specification §13详细说明所有此类更改,最突出的是,将非static
非私有(private)字段/方法更改为static
,反之亦然。
针对新库重新编译客户端代码,您应该一切顺利。
更新:如果您发布公共(public)库,则应尽可能避免进行不兼容的二进制更改,以保留所谓的“二进制向后兼容性”。理想情况下,单独更新依赖项 jar 不应破坏应用程序或构建。如果你必须打破二进制向后兼容性,它是 recommended在发布更改之前增加主要版本号(例如从 1.x.y 到 2.0.0)。
关于java - 是什么导致 java.lang.IncompatibleClassChangeError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1980452/