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/38359093/

相关文章:

c# - 如何强制使用订阅方法的事件

Java 多次按键

java - 使用 Spring Web Client 命中 https Rest 服务

java - 在Jar文件中修改

java - 为 Runnable Jars 使用不同的属性文件,Maven Eclipse

vb6 - InvokeMember 单击 VB6 时出现运行时错误 438

使用按钮更改 Activity 时出现 Android 运行时错误

java - 如何更新 ConcurrentHashMap 线程安全中的值

java - 从 java 类自动生成 jUnit 类

java - Maven:不正确(且不稳定)的传递依赖版本