我在Eclipse中的一個項目工作,當我啓動使用碼頭插件給了我java.lang.AbstractMethodError在Eclipse中使用jetty運行webapp。
java.lang.AbstractMethodError:
au.com.mycopmpany.impl.MyClassDAOImpl.findById(Ljava/lang/Integer;)Ljava/lang/Object;.
此文件在Eclipse編譯罰款和代碼實現方法有關錯誤的會談。從我的閱讀中,這個錯誤表明「在運行時」,JVM發現一個沒有實現此方法的類。
但我可以向你保證MyClassDAOImpl
肯定有findById
方法用正確的簽名實現。
這看起來像是Eclipse編譯器中的一個bug;我可以通過在命令提示符下運行maven package
來解決這個問題,然後在Eclipse中運行應用程序就能正常工作。
看來,Eclipse編譯器有一些與這個類有關的錯誤。我在網上閱讀了一些關於Eclipse編譯器中的泛型的錯誤(該類使用泛型),但是這個基類/接口在我們的代碼庫中重複實現,而且這個類總是有問題。
有沒有人知道解決方法,或更好的解決這個問題?
我可以每次都複製這個異常,所以如果Eclipse編譯器開發人員讀到這個,這是一個已知的問題,請隨時聯繫我以尋求幫助來跟蹤問題。
更新:
與問題的類是許多實現GenericDAO
之一,通用接口定義爲:
public interface GenericDAO<T, TList>
有問題的方法失敗是:
public T findById(Integer integer) throws APIException;
什麼是基類或接口聲明參數爲;整數,或者鏈上的東西,比如Serializable?我想知道是否它生成的代碼需要更高的參數(比如Serializable),但是它獲得了Integer,並且不知道它實現了Serializable。 – lumpynose 2009-07-24 00:57:17
難道你需要用超級或擴展來聲明你的id參數的類型嗎?例如,公共抽象類BaseDao>請注意,我只是在黑暗中刺穿而猜測。 –
lumpynose
2009-07-24 01:06:25
Lumpynose - 這可能是一個解決方案,我會嘗試,但有30個其他類實現此接口,他們工作正常。 – stevemac 2009-08-01 10:52:39