簡體   English   中英

方法未找到異常但方法確實存在並已實現

[英]method not found exception but method does exist and is implemented

我有以下問題。

Caused by: java.lang.NoSuchMethodError :ResourcePreviewRepository.objectExists(Ljava/lang/String;)Z

在運行時和調試期間,這是該類。

EntityRepository$GenericRepository$ResourcePreviewRepository$1323269030$Proxy$_$$_WeldClientProxy.objectExists(Unknown Source)

這是ResourcePreviewRepository的定義

public interface ResourcePreviewRepository extends GenericRepository<String>, EntityRepository<String, ResourceMetadata>

現在:objectExists方法存在於GenericRepository的具體實現中,名為AbstractJcrRepository。 但是這個方法也是在EntityRepository接口中定義的(我希望這里存在問題)。

public interface GenericRepository<IdentifierType extends Serializable> {
   boolean objectExists(IdentifierType id) throws RepositoryException;
}


public class AbstractJcrRepository implements GenericRepository<String> {

   @Override
   public boolean objectExists(final String id) throws RepositoryException {
      ...
   }

}

請注意,當我向GenericRepository添加強制轉換時,它確實有效,但顯然我不想強制轉換。

這是我應該得到的最后一個impl:

public class JcrResourcePreviewRepositoryImpl extends AbstractJcrEntityRepository<ResourceMetadata> implements ResourcePreviewRepository

但是雖然我確實有實現和方法可用但是我得到了這個錯誤。 我怎樣才能解決這個問題?

謝謝你的幫助。

更新解決方案我不會發布這是一個答案,但我不得不將缺少的方法添加到界面。 盡管Producer返回的impl類確實實現了這個方法,但只能通過繼承接口加上它的擴展。 因此,在繼承鏈中兩次聲明此方法可以解決它。

由於AbstractJcrRepository沒有實現ResourcePreviewRepository ,因此在發生異常時不會使用此實現。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM