Эндрю Нифер указал направление, но решение неверно.Это то, что работает:
1) Добавьте super();
к вашему конструктору Activator.
2) Поместите это в конструктор вашего плагина:
Properties properties = new Properties();
try {
Bundle bundle=Activator.getDefault().getBundle();
URL url = bundle.getEntry("plugin.properties");
InputStream stream;
stream = url.openStream();
properties.load(stream);
} catch (Exception e) {
e.printStackTrace();
}
И у вас есть функционирующие «свойства».
Пояснения:
Делая (1), вы достигнете всех этих функций:
public class Activator implements BundleActivator {
private static Bundle bundle;
public static Bundle getBundle() {
return myBundle;
}
public void start(BundleContext context) throws Exception {
bundle = context.getBundle();
}
}
Этоприсутствует уже в родительском классе плагинов.И вы просто не можете поместить его в Activator, потому что getBundle () является окончательным в плагине.
Обратите внимание на Activator.getDefault () в (2).Без этого комплект недоступен, он не статичен.И если вы просто создадите новый экземпляр активатора, его комплект будет null .
Существует еще один способ взять пакет:
Bundle bundle = Platform.getBundle(Activator.PLUGIN_ID);
Только убедитесь, что для Activator.PLUGIN_ID
задана правильная строка - как в поле идентификатора на странице обзора плагина.Кстати, вы должны проверять это Activator.PLUGIN_ID
после каждого изменения идентификатора плагина в любом случае .