Миграция OSGI - Java 8 → 9 (проблема Require-Capability)

Я пытаюсь перенести наш проект bnd(OSGI) с Java 8 на 9. После первого сбоя я подготовил базовый проект . Однако я застрял в проблемах с возможностями java-версий, точно так же, как ниже (только часть из них, но все они одинаковы с отличием от java-версии):

! Failed to start bundle org.apache.felix.gogo.command-1.0.2, exception 

Could not resolve module: org.apache.felix.gogo.command [12]
  Unresolved requirement: Import-Package: org.apache.felix.service.command; version="[1.0.0,2.0.0)"
    -> Export-Package: org.apache.felix.service.command; bundle-symbolic-name="org.apache.felix.gogo.runtime"; bundle-version="1.0.0"; version="1.0.0"
       org.apache.felix.gogo.runtime [2]
         Unresolved requirement: Import-Package: org.osgi.service.event; version="[1.3.0,2.0.0)"; resolution:="optional"
         Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.7))"

org.osgi.framework.BundleException: Could not resolve module: org.apache.felix.gogo.command [12]
  Unresolved requirement: Import-Package: org.apache.felix.service.command; version="[1.0.0,2.0.0)"
    -> Export-Package: org.apache.felix.service.command; bundle-symbolic-name="org.apache.felix.gogo.runtime"; bundle-version="1.0.0"; version="1.0.0"
       org.apache.felix.gogo.runtime [2]
         Unresolved requirement: Import-Package: org.osgi.service.event; version="[1.3.0,2.0.0)"; resolution:="optional"
         Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.7))"

Первое, что я сделал, это обновил все зависимости - не помогло. Я много гуглил, но выдал всего несколько ссылок. Тот, который был ближе всего к проблеме не помогло мысль - я добавил следующие строки, безрезультатно:

беги.bndrun

Bundle-RequiredExecutionEnvironment: JavaSE-9
Provide-Capability: osgi.ee;osgi.ee="JavaSE";version:List="1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,1.8,9"

Возможно, поможет обновление моего плагина bnd gradle, однако версия (в настоящее время я использую 3.5), упомянутая (4.0) в readme недоступен в mavenCentral.

Спецификация моего проекта — базовый пример репозитория

Eclipse Oxygen.3a Release (4.7.3a)
Bndtools 3.5.0.REL
Java 9.0.4+11
OSGI 6.0
Gradle 4.4
Gradle bnd plugin - 3.5

Кстати: Если вы пытаетесь запустить проект в Intellij, могут возникнуть проблемы - по крайней мере, мы не справились с запуском нашего основного проекта.

Любая помощь будет оценена по достоинству, я сделаю все возможное, чтобы предоставить вам больше информации, если это необходимо.

Обновлять

Даже когда я удаляю почти все зависимости (очищенная ветка), после запуска run.bndrun я получаю только

could not resolve the bundles: [project.main-1.0.0.201804171613 org.osgi.framework.BundleException: Could not resolve module: project.main [3]
  Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.8))"

]

Failed to start bundle project.main-1.0.0.201804171613, exception Could not resolve module: project.main [3]
  Unresolved requirement: Require-Capability: osgi.ee; filter:="(&(osgi.ee=JavaSE)(version=1.8))"

project.main мой единственный комплект.


person Witold Kupś    schedule 17.04.2018    source источник


Ответы (2)


Bnd 4.0 еще не выпущен. Так что в настоящее время его нет в центре maven.

Кроме того, вам необходимо убедиться, что версия платформы Felix понимает Java 9 и может правильно предоставить Java 9 ee.

person BJ Hargrave    schedule 17.04.2018
comment
1) спасибо за первый ответ - я был этой проблемой. :) 2) Это может быть причиной, однако даже моя собственная сборка жаловалась на java 8 ... Насчет felix - я проверил org.apache.felix.gogo - по крайней мере maven довольно новый... но я не смог найти никакой информации о поддержке java 9. Тем не менее, спасибо за подсказку. - person Witold Kupś; 17.04.2018
comment
Хорошо, я обнаружил, что Karaf использует felix, хотя они недавно обновились до последней версии. Кроме того, Караф работает над java 9 — возможно, не прямое доказательство, но всегда... Более того, на главная страница создателей felix говорит, что т.е. Затмение зависит от Феликса, так что... - person Witold Kupś; 17.04.2018
comment
Я говорю о фреймворке Felix OSGi, а не о пакетах Felix gogo. - person BJ Hargrave; 18.04.2018
comment
Я блуждал, о чем вы говорите со мной, потому что у нас нет зависимости от felix osgi — мы используем реализацию, включенную в enroute — который использует org.eclipse.osgi в версии 3.10 — 2015 год. Я обновил вручную до 3.13 - теперь работает по крайней мере базовый пример. - person Witold Kupś; 18.04.2018

Как я упоминал в комментарии, у нас есть зависимость от enroute 2.0, который предоставляет старую версию org.eclipse.osgi. После ручного обновления до 3.13 проблемы с Require-capability исчезли.

person Witold Kupś    schedule 19.04.2018