/ / Може ли пакет или пакет OSGi да зависи от няколко версии на друг пакет или пакет? - osgi, osgi-пакет

Може ли пакет или пакет OSGi да зависи от няколко версии на друг пакет или пакет? - osgi, osgi-пакет

Може ли пакет OSGi да има две зависимости, всяка от които е на различна версия на същия пакет OSGi?

Може ли пакет OSGi да има две зависимости, всяка от които е на различна версия на същия пакет OSGi?

(Опитвам се да науча OSGi отгоре. Този въпрос има за цел да ми помогне да разбера основните понятия. От четенето на онлайн статии за услугите на OSGi, разбирам, че такива зависимости със сигурност не биха били препоръчани.

(Актуализиране: преформулираните два въпроса.)

Отговори:

6 за отговор № 1

Не. OSGi осигурява постоянно пространство за клас за пакет. Това означава, че той е изложен само на един клас от дадено име. Така че един пакет не може едновременно да вижда повече от една версия на пакет.

Това не означава, че ClassCastExceptions саневъзможно от момента, в който вашият пакет е пряко зависим от вас, може да изложи обекти от зависимостите си във вашия пакет. Правилното използване на ограниченията на използването на пакетите за експортиране е важно, за да се предотврати това.


1 за отговор № 2

Може ли един пакет OSGi да зависи от две различни версии на друг пакет OSGi по едно и също време? Може ли OSGi пакетът да зависи от две различни версии на друг OSGi пакет по едно и също време?

Нещо като. Можете да разчитате на диапазони или конкретни версии на друг пакет или пакет OSGI по следния начин:

Импорт-пакет: org.osgi.framework; версия = "[1.3,2.0)"

Не съм сигурен дали това се отнася в първата секциязащото връзките не трябва да зависят от други пакети, а само от пакети. Това изисква "Необходим пакет", но се препоръчва да не го използвате. Require-Bundle приема версии, така че теоретично трябва да поддържа версиите на версиите.

След като вашият пакет OSGi бъде разрешен в рамките на OSGi, тойще намери пакета на която и да е от тези версии. Въпреки това, тя не може да разреши пакет (org.osgi.framework) на два отделни пакета (един, който предоставя версия 1.9 и една, която осигурява 1.8). Тя ще избере най-новата версия, базирана на SemVer.

Ако опитате да го посочите два пъти в "Импорт-пакет", ще получите грешка "Дублиране на импортирането".