У меня есть приложение RAP, и я использую API операций P2 (org.eclipse.equinox.p2.operations) для установки компонентов удаления в зависимости от определенных аргументов командной строки.
Функции установлены и удаленыправильно, но плагины удаленной функции не удаляются.
После некоторых поисков я увидел ответ на мой вопрос: Equinox / p2 / FAQ
Я пытаюсь установить функцию следующим образом:
myRapApp -install -profileProperties org.eclipse.update.install.features=true
завершите работу системы, затем перезапустите ее и удалите функцию, убедившись, что сборщик мусора p2 явно вызывается.См. Код ниже:
IQueryResult<IInstallableUnit> queryResult = getInstalledIUfromID(rootIdToUninstall);
if (queryResult.isEmpty()) {
log.error("Installable unit {} is not installed.", rootIdToUninstall);
return false;
}
// --- If found, trigger an UninstallOperation ---------------
UninstallOperation uninstallOperation = new UninstallOperation(this.provisioningSession, queryResult.toSet());
IStatus result = this.performOperation(uninstallOperation);
if (!result.isOK()) {
String childStatusStr = null;
for ( IStatus children : result.getChildren()) {
childStatusStr += "\t" + children.toString() + LINE_SEP;
}
log.error("Fail to uninstall {}: {} {} {}", rootIdToUninstall, result.getMessage(), LINE_SEP, childStatusStr);
if ( result.getException() != null ) {
log.error("Uninstalling exception:", result.getException());
}
} else {
IProfileRegistry profileRegistry = (IProfileRegistry) this.provisioningAgent.getService(IProfileRegistry.SERVICE_NAME);
IProfile profile = profileRegistry.getProfile(IProfileRegistry.SELF);
GarbageCollector gc = (GarbageCollector) this.provisioningAgent.getService(GarbageCollector.SERVICE_NAME);
gc.runGC(profile);
}
К сожалению, плагины все еще остаются после удаления этой функции.
Как я могу убедиться, что я указываю "org.eclipse.update.install.features = true "правильно, похоже, что -profileProperties org.eclipse.update.install.features = true не помогает.
Более того, есть ли способ установить это свойство в значение true,по умолчанию?
Может ли быть, что я все еще что-то упускаю?
[Редактировать 1] После некоторого устранения неполадок я обнаружил, что продукты, материализуемые с помощью Tycho, могут быть настроены для обеспечения свойства профиля org.eclipse.update.install.features установлен в true.Фактически, согласно конфигурации Tycho, которая является настройкой по умолчанию.