2017-11-16 5 views
3

에서 동일한 패키지를 가져 내가 OSGi 번들 Bundle1의 클래스 org.foo.Customer과 같은 OSGI 환경에서 다른 OSGi 번들 Bundle2에서 다른 클래스 org.foo.Subscriber 있습니다. Bundle1 exports-package org.foo.는 내보내기 및 OSGi 번들

import org.fooBundle2 패키지는 Bundle1이 가능합니까? Bundle1의 매니페스트 파일에서 동일한 패키지가 내보내기 및 가져 오기에 지정되므로 런타임 중에 충돌이 발생합니다.

답변

2

분할 패키지는 OSGi에서 strongly discouraged입니다. 이러한 번들을 소유하고 있다면 하나 또는 두 패키지의 이름을 바꾸거나 분할 패키지를 하나의 번들로 결합해야합니다.

Bundle2는 분할 패키지를 가져올 수 있지만 Bundle2의 클래스 로더는 Bundle2의 내부 클래스가 아닌 Bundle1의 클래스 만 볼 수 있습니다.

번들 중 하나를 다른 클래스의 fragment으로 만들 수 있습니다. 동일한 클래스 로더를 사용하게됩니다. 이렇게하려면 조각 번들의 매니페스트 만 변경해야하며 어떤 이유로 든 번들에 참가하거나 패키지 이름을 변경할 수없는 경우 옵션이 될 수 있습니다.