私はEclipseでプロジェクトに取り組んでおり、jettyプラグインを使用して起動すると
java.lang.AbstractMethodError:
au.com.mycopmpany.impl.MyClassDAOImpl.findById(Ljava/lang/Integer;)Ljava/lang/Object;.
このファイルは Eclipse で正常にコンパイルされ、コードはエラーが示すメソッドを実装しています。私の読書から、このエラーは、「実行時に」JVMがこのメソッドが実装されていないクラスを見つけたことを示しています。
しかし、正しい署名でメソッドが実装されてMyClassDAOImpl
いることは間違いありません。findById
これは、Eclipse コンパイラーのバグのようです。maven package
コマンド プロンプトから実行して問題を解決し、 Eclipse 内でアプリケーションを実行すると正常に動作します。
Eclipse コンパイラーには、このクラスに関して何らかのバグがあるようです。Eclipse コンパイラーのジェネリックに関するバグ (このクラスはジェネリックを使用します) についてオンラインで何かを読みましたが、この基本クラス/インターフェースはコード ベースで何度も再実装されており、常に問題を抱えているのはこのクラスです。
誰かがこの問題の回避策、またはさらに良い解決策を知っていますか?
この例外は毎回再現できます。Eclipse コンパイラの開発者がこれを読んで、これが既知の問題である場合は、問題を追跡するための支援が必要な場合は、遠慮なく私に連絡してください。
アップデート:
GenericDAO
問題のあるクラスは、Generic インターフェイスが次のように定義されている場所を実装する多くのクラスの 1 つです。
public interface GenericDAO<T, TList>
失敗している問題のメソッドは次のとおりです。
public T findById(Integer integer) throws APIException;