Убедитесь, что это проблема генерации MANFEST.MF
(см. эту ветку )
Откройте MANIFEST.MF
базового проекта и посмотрите на вкладку Runtime.
Пакеты, к которым нужно получить доступ в других плагинах, должны быть перечислены как Экспортируемые пакеты.
Попробуйте пересчитать правильный список экспортируемых пакетов.
Если это не работает, как описано в этой теме , у вас все еще есть возможность отключить предупреждение :
- Windows -> Настройки -> Java -> Компилятор -> Ошибки / предупреждения
- (или: Project) Свойства -> Компилятор Java -> Ошибки / Предупреждения
Параметры «Предупреждение» или «Игнорировать» только скрывают потенциальную проблему в проекте, позволяя проекту использовать любые классы, игнорирующие предопределенные правила доступа.
Чтобы полностью решить эту проблему, проанализируйте проект и найдите использование ограниченных классов и выполните необходимые действия (либо удалите эти ссылки, либо правила доступа).
Для внешней банки (не в вашем случае), Потенциальный обходной путь :
Если я добавлю файл Jar в качестве внешнего файла Jar и переместу его вверх перед системной библиотекой JRE (в порядке экспорта), я не получу эту ошибку.
На самом деле OP slowik удалось избежать зависимости, получив доступ к сервисам Workbench
через PlatformUI
PlatformUI.getWorkbench()
вместо Workbench.getInstance()
Этот подход используется в классе rcp.util.RCPUtil
:
/**
* Returns wether the ViewPart with the given id is currently visble in
* one of the pages of the active Workbench window. Will also return
* true when the page-book containing this view is minimized.
*
* @param viewID The id of the view to be queried
* @return Wether the view is visible
*/
public static boolean isViewVisible(String JavaDoc viewID) {
// IWorkbenchPage[] pages = Workbench.getInstance().getActiveWorkbenchWindow().getPages();
IWorkbenchPage[] pages = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getPages();
for (int i = 0; i < pages.length; i++) {
IWorkbenchPart part = pages[i].findView(viewID);
if (part != null) {
return isPartVisible(part);
}
}
return false;
}