我有两个OSGI包(基础,依赖),依赖包访问基本包的一些API . 当我取消部署基础包并重新部署它时,我得到了 "Caused by: org.jboss.msc.service.DuplicateServiceException: Service jboss.module.spec.service."deployment.base-1.0.jar".main is already registered" ,但是基础包的取消部署成功了 .

我想了解当有几个依赖于它的bundle时osgi bundle的取消部署是如何工作的 .

Base Bundle Manifest

清单 - 版本:1.0

Bundle-Activator:com.learning.base.BaseBundleActivator

捆绑类别:osgi

Bundle-ManifestVersion:2

捆绑名称:基础

Bundle-SymbolicName:OSGI.base

捆绑版本:1.0.0

创建者:Apache Maven Bundle插件

Export-Package:org.osgi.framework; version =“1.7”,com.learning.base.model; version =“1.0.0”,com.learning.base.service; version =“1.0.0”;使用: = “com.learning.base.model”

Import-Package:com.learning.base.model; version =“[1.0,2)”,com.learning.base.service; version =“[1.0,2)”,javax.security.auth.x500,org . osgi.framework;版本= “[1.7,2)”

要求能力:osgi.ee; filter:=“(&(osgi.ee = JavaSE)(version = 1.8))”

工具:Bnd-3.2.0.201605172007

Dependent Bundle Manifest

清单 - 版本:1.0

Bundle-Activator:com.learning.dependent.DependentBundleActivator

捆绑类别:osgi

捆绑名称:依赖

Bundle-SymbolicName:OSGI.dependent

捆绑版本:1.0.0

创建者:Apache Maven Bundle插件

Export-Package:com.learning.dependent.model; version =“1.0.0”; uses:=“com.learning.base.model”,com.learning.dependent.service; version =“1.0.0”; uses := “com.learning.dependent.model,org.osgi.framework”

Import-Package:org.osgi.framework; version =“[1.7,2)”,com.learning.base.model; version =“[1.0,2)”,com.learning.base.service; version =“[ 1.0,2)”

要求能力:osgi.ee; filter:=“(&(osgi.ee = JavaSE)(version = 1.8))”

工具:Bnd-3.2.0.201605172007