У меня очень странная ошибка после переноса проекта 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')
Из-за этого предупреждения и из-за того, что эта часть кода сработала, я думаю, что проблема как-то связана с правилами доступа. Я заглянул в свойства проекта и увидел, что правило доступа не рекомендуется: ** где на всех внешних банках.
После прочтения этого поста я попытался удалить правила, но по какой-то причине после применения снова переключился.
Надеюсь, у кого-то из вас есть идея, как решить эту проблему.