JavaのnoSuchMethodErrorの原因と解決策

ファイル

JavaのnoSuchMethodErrorの原因と解決策

外観上の理由

A.classコールB.methodX。

クラスBの場合にロードされた実行時間がmethodXに存在していてもよいです

  • methodXアプローチは存在しません。

  • methodX A.classメソッドのシグネチャとコールB.methodXの署名が一致しません

根本的な原因

矛盾やランタイムバージョンBのコンパイル時のバージョンB

classPathの複数のジャーにランB、JVMエラージャーパッケージにロード

別のクラスローダは、異なるバージョンのBクラスにロードされました。

一度クラスローダの子の親クラスローダの代表団は、B.classへのアクセスは、親classLoderにロード

分類

クラスのJVM

  • 理由
  • 通常使用のライトコード、コンパイル時およびJDKのバージョンは比較的高いですが、時間が使用される低JDKのバージョンを実行しています
  • ソリューション
  • 確認動作環境JDKのバージョンが正しいですか

カテゴリジャーに含ま会社のプロジェクト

  • 理由
  • JARパッケージの低いバージョンの導入

  • スナップショットの導入は、パッケージの最新バージョンではありません

  • ソリューション
  • ジャーパッケージの修正バージョンが正しいバージョンに依存しています

  • パッケージのスナップショットのバージョンにはありません

  • MVN命令を実行する際に-Uパラメータを追加します。インストール/クリーンパッケージをMVN -U
  • お勧めできません

  • その他の環境、コンパイル時、あまりにも、パラメータを追加します

  • 設定のmaven

ネクサス

セントラル

http://中央

常に

  • お勧めできません

  • 他の人も改正されなければなりません

  • プロジェクト構成でのpom.xml
  • 推奨

プロジェクトは、カテゴリに含ま第三者の瓶に依存しています

  • 理由
  • JARパッケージの低いバージョンの導入

  • より多くのjarパッケージの導入は、しかし、JARパッケージの間違ったバージョンにロードされます

  • サブクラスのクラスローダは、クラスの時間をロードするクラスローダの親クラスローダクラスローダの低いバージョンに委任します

  • ターゲット
  • -verboseすることから始めます。1.クラスのfind負荷クラスへの

  • 2. JVMクラスローダ構造判断し、クラスローダがロードクラスとは、解決する方法を見つけるためにということです

  • ソリューション
  • ジャーパッケージの正しいバージョンに変更

  • Mavenのjarコマンドによって、右のパッケージを選択します

  • 最初のステップ:リストに依存するJARパッケージ
  • MVN依存関係:listコマンドリストリスト、および範囲(直接および転送を含む)すべての現在の依存を。

  • MVN依存関係:ツリーコマンドはすべての階層的な依存性は、依存関係は、書籍の配信から見ることができます。

  • ステップ2:使用は望ましくない依存性を除外除外します
  • JVMエラーにつながるのjarパッケージをロードするための表示コマンドを使用して
  • -verbose:クラス
リリース元の2件の記事 ウォンの賞賛0 ビュー8

おすすめ

転載: blog.csdn.net/weixin_42335070/article/details/104946347