我正在使用 Karaf 4.2.16。我想安装一个功能:
karaf@mst-ica()> feature:install my_feature.config
并收到以下错误:
Unable to resolve root:
missing requirement [root] osgi.identity;
osgi.identity=my_feature.config;
type=karaf.feature;
version="[4.0.0.SNAPSHOT,4.0.0.SNAPSHOT]";
filter:="(&(osgi.identity=my_feature.config)(type=karaf.feature)(version>=4.0.0.SNAPSHOT)(version<=4.0.0.SNAPSHOT))"
[
caused by: Unable to resolve my_feature.config/4.0.0.SNAPSHOT:
missing requirement [my_feature.config/4.0.0.SNAPSHOT] osgi.identity;
osgi.identity=my_feature.commands;
type=osgi.bundle;
version="[4.0.0.SNAPSHOT,4.0.0.SNAPSHOT]";
resolution:=mandatory
[
caused by: Unable to resolve my_feature.commands/4.0.0.SNAPSHOT:
missing requirement [my_feature.commands/4.0.0.SNAPSHOT] osgi.wiring.package;
filter:="(&(osgi.wiring.package=org.apache.felix.gogo.commands)(version>=0.17.0)(!(version>=1.0.0)))"
]
]
我使用 Equinox 作为系统框架:
karaf@mst-ica()> system:framework
Current OSGi framework is equinox
但是,这对于 Karaf 2.2.0 来说不是问题,并且我尝试安装的功能工作正常。
如何才能使用 Felix gogo 命令?我需要先安装特定功能吗?
问题已解决。正如更新说明(从2.x到3.x)中提到的,org.apache.felix.gogo.commands被替换为org.apache.karaf.shell.commands。
在开发方面,以前由 org.apache.felix.gogo.commands* 包提供的 shell 注释(@Command、@Argument 等)现已弃用。 Apache Karaf 3.0.0 仍然支持这些注释,但我们鼓励用户升级到新包 org.apache.karaf.shell.commands。
我更改了我的 pom 文件和 Java 导入并重建了该功能。另外,我已经使用
karaf@mst-ica()> feature:install shell-compat
安装了 shell-compat。
完成所有这些后,我能够安装我的功能,没有错误。