方法未发现异常,但方法确实存在并已实现



我有一个问题。

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方法确实存在于名为AbstractJcrRepository的GenericRepository的具体实现中。但是这个方法也是在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添加强制转换时,它确实工作,但显然我不想强制转换。

这是我应该得到的最终含义:

public class JcrResourcePreviewRepositoryImpl extends AbstractJcrEntityRepository<ResourceMetadata> implements ResourcePreviewRepository

但是,虽然我有实现和方法可用,我得到这个错误。我该如何解决这个问题?

谢谢你的帮助。

UPDATE WITH SOLUTION我不会张贴这是一个答案,但我不得不添加缺失的方法接口。虽然生产者返回的impl类确实实现了这个方法,但只能通过继承接口加上扩展来实现。因此,在继承链中声明该方法两次就解决了这个问题。

由于AbstractJcrRepository不实现ResourcePreviewRepository,因此在发生异常时使用的不是这个实现。

最新更新