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 に答える