0

可能重复:
是什么导致 java.lang.IncompatibleClassChangeError?

我正在使用 eclipse 1.6 进行车辆跟踪系统项目。我正在执行客户端代码,它工作正常。但是如果我在eclipse中导入相同的代码,jar文件就创建成功了。当我运行该代码时,我得到一个IncompatibleClassChangeError.

当我使用 if 条件检查位置的有效性时,出现此错误。

错误:

java.lang.IncompatibleClassChangeError: com/nxp/telematics/location/Location.isValid()Z 
at com.nxp.atop.LocationListenerExample.locationUpdated(LocationListenerExample.java:28) 
at com.nxp.telematics.location.LocationProvider$1.locationUpdated(LocationProvider.java:101) 
at com.nxp.telematics.location.AbstractLocationFilter.locationUpdated(AbstractLocationFilter.java:86) 
at com.nxp.telematics.location.TimingFilter.deliver(TimingFilter.java:271) 
at com.nxp.telematics.location.TimingFilter.access$800(TimingFilter.java:66) 
at com.nxp.telematics.location.TimingFilter$DeliveryAttemptTask.run(TimingFilter.java:136) 
at java.util.Timer$TimerImpl.run(Timer.java:207) 

我认为这不是程序错误。请帮我。

4

1 回答 1

-2

这意味着您在没有重新编译客户端代码的情况下对库进行了一些不兼容的二进制更改。Java 语言规范 S13 详细说明了所有此类更改,最突出的是,将非静态非私有字段/方法更改为静态或反之亦然。

针对新库重新编译客户端代码,您应该一切顺利。

更新:如果您发布公共库,则应尽可能避免进行不兼容的二进制更改,以保留所谓的“二进制向后兼容性”。理想情况下,单独更新依赖项 jar 不应破坏应用程序或构建。

于 2012-12-29T12:52:39.153 回答