java - 是什么导致 java.lang.IncompatibleClassChangeError?

标签 java jar runtime-error binary-compatibility

我将 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/

相关文章:

java - 在 synchronized block 中使用 Vector 有什么区别吗?

java - 如何在 Eclipse 中安装 M2E - Maven Integration?

linux - 如何找到正在运行的jar文件的路径

java - 获取 .jar 文件到手机错误

c - 使用指定的初始化程序初始化数组时出现奇怪的值

java - 如何在 javafx 中获取 label.getWidth()

java - 让计算器上的按钮具有交互性(以便它们实际上可以加、减等)的最佳方法是什么?

java - 无法为 Hadoop 生成 jar 文件

ios - 线程 1 : EXC_BAD_ACCESS (code=1, 地址=0xf1759018)

java - 无法合并 Dex 错误 : Android Studio 3. 0