将 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。
阅读这篇文章后,我试图删除规则,但由于某种原因,应用它后又切换回来。
我希望你们中的某个人对如何解决这个问题有一个想法。