我最近开始使用OSGi框架..我正在尝试从基于maven的项目启动OSGi容器..
我在上面的maven项目中的pom.xml文件中添加了这个依赖项 -
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.framework</artifactId>
<version>4.2.1</version>
</dependency>
以下是我的主要申请 -
public static void main(String[] args) throws BundleException {
FrameworkFactory frameworkFactory = ServiceLoader.load( FrameworkFactory.class).iterator().next();
Map<String, String> config = new HashMap<String, String>();
//TODO: add some config properties
Framework framework = frameworkFactory.newFramework(config);
framework.start();
}
现在,当我尝试导入FrameworkFactory
的包时,我有两个选项可供选择。下面是图片。任何人都可以帮助我在这里选择哪一个?
我选择了这两个?
import org.osgi.framework.launch.Framework;
import org.osgi.framework.launch.FrameworkFactory;
这是对的吗?
答案 0 :(得分:3)
它是org.osgi.framework.launch.FrameworkFactory,因为这使您可以访问所有OSGi框架,而不仅仅是Apache Felix。 ServiceLoader使用此类的名称查找META-INF/services
文件的所有类路径条目(jar)org.osgi.framework.launch.FrameworkFactory
目录。如果您查看Felix框架包,您会发现此文件包含'org.apache.felix.framework.FrameworkFactory',然后将实例化并返回。
因此,如果您只想使用Apache Felix,您也可以执行new org.apache.felix.framework.FrameworkFactory()
而不是使用Java Service Loader的间接。