我正嘗試安裝並啓動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! –