[解決済み】java.lang.IncompatibleClassChangeErrorの原因は何ですか?
2022-04-04 01:52:05
質問
JavaライブラリをJARとしてパッケージングしているのですが、多くの
java.lang.IncompatibleClassChangeError
メソッドを呼び出そうとすると、"s "が表示されます。これらのエラーはランダムに表示されるようです。どのような種類の問題がこのエラーを引き起こすのでしょうか?
解決方法を教えてください。
これは、クライアントコードを再コンパイルすることなく、ライブラリに互換性のないバイナリ変更を行ったことを意味します。
Java言語仕様書§13
は、そのようなすべての変更について詳述しており、最も顕著なのは、非標準の
static
プライベートでないフィールド/メソッドを
static
またはその逆。
新しいライブラリに対してクライアントコードを再コンパイルすれば、うまくいくはずです。
UPDATE: パブリック・ライブラリを公開する場合、バイナリの後方互換性というものを維持するために、互換性のないバイナリを変更することはできるだけ避けるべきです。 依存関係のあるjarを更新するだけで、理想的にはアプリケーションやビルドが壊れることはないはずです。もしバイナリの後方互換性を破らねばならないのであれば、それは 推奨 メジャーバージョン番号を増やす (例: 1.x.y から 2.0.0 へ) ことで、変更をリリースすることができます。
関連
-
[解決済み] Firebase クラスにシリアライズするプロパティが見つからない
-
[解決済み] JavaにおけるHashMapとHashtableの違いは何ですか?
-
[解決済み] Javaにおけるpublic、protected、package-private、privateの違いは何ですか?
-
[解決済み] serialVersionUIDとは何ですか、またなぜそれを使用する必要がありますか?
-
[解決済み] リフレクションとは何か、なぜ有用なのか?
-
[解決済み] JavaBeanとは何ですか?
-
[解決済み] 整数の平方根が整数であるかどうかを判断する最速の方法
-
[解決済み] Eclipseが起動できない - Javaは起動したが終了コード=13を返した
-
[解決済み] Javaにおける例外処理によるパフォーマンスへの影響とは?
-
[解決済み】EclipseでインポートされたMavenプロジェクトが、デフォルトでJava 1.6ではなくJava 1.5を使用する原因は何ですか、またそうならないようにするにはどうすればいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] tempとは何ですか、またjavaにおけるtempの用途は何ですか?
-
[解決済み] javaで部分クラスを実装する方法
-
[解決済み] java.lang.IncompatibleClassChangeError: Mongo クラスを実装しています。
-
[解決済み] javac ソースファイルが見つかりません
-
[解決済み] javax.mail.MessagingException: SMTPホストに接続できませんでしたか?
-
[解決済み] タイプの安全性。アンチェック・キャスト
-
[解決済み] 文字列の長さに応じて文字列をトリミングする
-
[解決済み] java.sql.SQLRecoverableException: IO エラーです。NL Exceptionが発生しました
-
[解決済み] java.io.IOException。DER長の短い読み取り
-
[解決済み】ユーバージャーとは何ですか?