我正尝试安装并启动Karaf 2.3.3中的OSGi UserAdmin接口的Apache Felix实现。OSGi:无法在Apache Karaf中找到UserAdmin
[email protected]> install mvn:org.apache.felix/org.apache.felix.useradmin/1.0.3
但是,束从来没有得到解决,我得到启动以下错误:
Unable to start bundle 89: Activator start error in bundle org.apache.felix.useradmin [89].
[...]
Caused by: java.lang.NoClassDefFoundError: org.osgi.service.useradmin.UserAdminListener
at org.apache.felix.useradmin.osgi.UserAdminListenerListHelper.class$(UserAdminListenerListHelper.java:38)
at org.apache.felix.useradmin.osgi.UserAdminListenerListHelper.<init>(UserAdminListenerListHelper.java:38)
at org.apache.felix.useradmin.osgi.Activator.createServiceContext(Activator.java:68)
at org.apache.felix.useradmin.osgi.Activator.start(Activator.java:37)
at org.apache.felix.framework.util.SecureAction$Actions.run(SecureAction.java:1605)
at java.security.AccessController.doPrivileged(Native Method)[:1.7.0_51]
at org.apache.felix.framework.util.SecureAction.startActivator(SecureAction.java:636)
at org.apache.felix.framework.Felix.activateBundle(Felix.java:1977)
... 16 more
正如我在阅读,Karaf已经嵌入了OSGi纲要API,但不会导出包默认。我改变了config.properties
文件明确导出UserAdmin包:
org.osgi.framework.system.packages= \
[...]
org.osgi.service.permissionadmin;uses:="org.osgi.framework";version="1.1", \
org.osgi.service.useradmin;uses:="org.osgi.framework";version="1.1", \
[...]
包org.osgi.service.useradmin
似乎是由Karaf出口,因为我可以在运行packages:exports
看到。
我一直得到错误,直到我删除从配置文件中的行,并部署了OSGi纲要API捆绑的建议in this other thread。
但是,嵌入完整的Compendium API似乎对我有点矫枉过正(虽然我可能是错的)。我现在有4个包导出UserAdmin包:
[email protected]> packages:exports | grep useradmin
0 # org.osgi.service.useradmin; version=1.1.0
20 org.osgi.jmx.service.useradmin; version=1.1.0
82 org.osgi.service.useradmin; version=1.1.0 --> OSGi Compendium osgi.cmpn (5.0.0.201305092017)
89 org.apache.felix.useradmin; version=1.0.0 --> Apache Felix User Admin Service (1.0.3)
你知道的更好/更简单的方法来实现这一目标?
我意识到第二次导出与用户管理服务无关,只是忘了将其修改出来:谢谢指出! 我期待在嵌入式API中使用新的Felix UserAdmin! –