Я нахожусь в процессе обновления нашего продукта сбора данных на основе Eclipse RCP для использования целевой платформы 2019-03, но после успешной сборки продукт не удается установить с org.eclipse.equinox.p2.director со следующим сообщением:
Installation failed.
Cannot complete the install because one or more required items could not be found.
Software being installed: Data Acquisition Server 9.14.0 (uk.ac.diamond.daq.server.product 9.14.0)
Missing requirement: Eclipse Application Services 2.1.400.v20181215-2145 (org.eclipse.e4.core.services 2.1.400.v20181215-2145) requires 'osgi.extender; osgi.component [1.2.0,2.0.0)' but it could not be found
Cannot satisfy dependency:
From: Eclipse 4 Rich Client Platform 1.6.400.v20190305-0602 (org.eclipse.e4.rcp.feature.group 1.6.400.v20190305-0602)
To: org.eclipse.equinox.p2.iu; org.eclipse.e4.core.services [2.1.400.v20181215-2145,2.1.400.v20181215-2145]
Cannot satisfy dependency:
From: Eclipse Platform 4.11.0.v20190307-0500 (org.eclipse.platform.feature.group 4.11.0.v20190307-0500)
To: org.eclipse.equinox.p2.iu; org.eclipse.rcp.feature.group [4.11.0.v20190307-0500,4.11.0.v20190307-0500]
Cannot satisfy dependency:
From: Eclipse RCP 4.11.0.v20190307-0500 (org.eclipse.rcp.feature.group 4.11.0.v20190307-0500)
To: org.eclipse.equinox.p2.iu; org.eclipse.e4.rcp.feature.group [1.6.400.v20190305-0602,1.6.400.v20190305-0602]
Cannot satisfy dependency:
From: Analysis Server Components Feature 1.0.0.v20190614-0955 (uk.ac.diamond.daq.analysis.server.feature.feature.group 1.0.0.v20190614-0955)
To: org.eclipse.equinox.p2.iu; org.eclipse.platform.feature.group [4.11.0.v20190307-0500,4.11.0.v20190307-0500]
Cannot satisfy dependency:
From: Main Data Acquisition Server Feature 9.14.0.v20190614-0955 (uk.ac.diamond.daq.server.feature.feature.group 9.14.0.v20190614-0955)
To: org.eclipse.equinox.p2.iu; uk.ac.diamond.daq.analysis.server.feature.feature.group [1.0.0.v20190614-0955,1.0.0.v20190614-0955]
Cannot satisfy dependency:
From: Data Acquisition Server 9.14.0 (uk.ac.diamond.daq.server.product 9.14.0)
To: org.eclipse.equinox.p2.iu; uk.ac.diamond.daq.server.feature.feature.group [9.14.0.v20190614-0955,9.14.0.v20190614-0955]
Это указывает на то, что расширение osgi.component, требуемое для плагина e4.core.services, не может быть найдено.Посмотрев в Интернете, я обнаружил, что это требование должно быть предоставлено плагином org.apache.felix.scr, который присутствует на моей целевой платформе и согласно его файлу манифеста предоставляет требование в версии 1.4.0, которая находится в требуемом диапазоне.указано в ошибке (1.2.0 - 2.0.0).Я также подтвердил, что этот плагин присутствует в папке хранилища, указанной в команде, которая запускает org.eclipse.equinox.p2.director, а именно:
./eclipse -application org.eclipse.equinox.p2.director
-repository file:/tmp/uk.ac.diamond.daq.server.site_20190618_144254.420236/output/uk.ac.diamond.daq.server.site_1.0.0-eclipse.feature/site.p2/
-installIU uk.ac.diamond.daq.server.product
-destination /scratch/tptest2/servers/server_20190618-1446_linux64
-profile GDA-server
-profileProperties org.eclipse.update.install.features=true
-p2.os linux
-p2.ws gtk
-p2.arch x86_64
-roaming
Можеткто-нибудь посоветует, что тут не так?Учитывая, что плагины org.eclipse.e4.core.services и org.apache.felix.scr, являющиеся двумя сторонами этого требования, присутствуют и предоставляются как часть целевой платформы 2019-03, я был удивлен, когда это произошло,Есть ли какая-то другая зависимость, о которой я не знаю, которая могла вызывать сбой разрешения, или есть какой-то компонент, которого больше нет в этом TP, который я должен учитывать.Наш предыдущий (рабочий) TP - это версия Oxygen3, в которой версия felix предоставляет V1.3 osgi.component.
Я также должен сказать, что когда я генерирую в Eclipse средство запуска из того же определения продукта,процесс выполнен успешно, и приложение работает правильно.
# ОБНОВЛЕНИЕ
Я опробовал банку @ PeterKirschner, но она не устранила проблему, однако она сделала этоукажите мне, в каком направлении задействован бит системы p2, т.е. content.xml / jar.Я посмотрел на преобразованную версию, и она не внесла каких-либо изменений в модуль felix.scr, но было очевидно, что там нет тегов обеспечивающего osgi, extender и osgi.component, но существует множество тегов requireзапрашивая это.Я проверил в манифесте версию felix scr в TP и в ней есть запись Provides-Capabiliy, ссылающаяся на расширитель в приемлемой версии, поэтому я был немного озадачен, почему он, кажется, был проигнорирован.Вот соответствующий бит манифеста:
Provide-Capability: osgi.extender;osgi.extender="osgi.component";uses:
="org.osgi.service.component";version:Version="1.4",osgi.service;obje
ctClass:List<String>="org.osgi.service.component.runtime.ServiceCompo
nentRuntime";uses:="org.osgi.service.component.runtime"
Originally-Created-By: Apache Maven Bundle Plugin
Export-Package: org.apache.felix.scr.component;version="1.1.0";uses:="
org.osgi.service.component",org.apache.felix.scr.info;version="1.0.0"
Bundle-Name: %bundleName
Итак, чтобы увидеть, что произойдет, я попытался добавить соответствующий тег Обеспечения к блоку felix.scr и повторно запустил p2.director, что привело к применениюбыть успешно установленным!Я проверил его, и он, кажется, работает нормально, как только я выполнил обычные шаги автоматической установки из нашего процесса.
Таким образом, проблема заключается не в наличии тегов, связанных с кислородом3, а в том, что объявленная возможность пакета не попадает в файл context.xml.@PeterKirschner у вас есть идеи, почему это может быть?Ох, и еще раз спасибо за вашу помощь