2

将 PDE 项目转移到 bndtools 并从 java6 转移到 java8 后,我遇到了一个非常奇怪的错误。结构非常复杂,但我确信它在旧版本中有效。

错误出现在我尝试启动新变量的一个类中:

GenericStorageItem<SharedItem> result;

这会导致以下错误:

Bound mismatch: The type SharedItem is not a valid substitute for the bounded parameter <T extends Serializable> of the type GenericStorageItem<T>

对象 SharedItem 的定义如下:

public abstract class SharedItem extends LSContent implements Storable

它扩展了 LSContent,如下所示:

public abstract class LSContent implements PastContent

最后 PastContent 包含对 Serializable 的引用:

public interface PastContent extends Serializable

拒绝绑定的类是GenericStorageItem:

public class GenericStorageItem<T extends Serializable> implements StorageItem

除了这个错误,我在每次使用 SharedItem 时都会收到以下警告

Discouraged access: The type 'SharedItem' is not API (restriction on required project 'the package where the class SharedItem comes from')

由于这个警告以及这部分代码确实有效,我认为这个问题与访问规则有关。我查看了项目属性,发现访问规则 Disouraged:** where at all external jars。

阅读这篇文章后,我试图删除规则,但由于某种原因,应用它后又切换回来。

我希望你们中的某个人对如何解决这个问题有一个想法。

4

0 回答 0