当前位置: 首页 > 知识库问答 >
问题:

OSGi(Felix):更改system bundle的标准包,使其在Android上运行

闽念
2023-03-14

Bundle-Name=系统包

Bundle-SymbolicName=org.apache.felix.framework

Bundle-Version=4.1.0。快照

        Properties configArg = new Properties();
        File chacheDir = this.getFilesDir();
        configArg.setProperty(Constants.FRAMEWORK_STORAGE, chacheDir.getAbsolutePath());
        configArg.setProperty("osgi.shell.telnet.ip", ipadd);
        configArg.setProperty("osgi.shell.telnet.port", "6666");
        Felix felix = new Felix(configArg);

        try{
            felix.start();
            ...

现在的问题是,我如何获得系统包中缺少的标准java包。

共有1个答案

吴唯
2023-03-14

我发现的最佳解决方案是用Android平台中可用的特定包替换framework_systempackages。这些是,

  • 您在android.jar中找到的针对目标设备的所有包,
  • java.*junit.*外,
  • 但系统绑定的所有org.osgi.*包都正常导出。

所以,比如

String SYSTEM_PACKAGES = 
    "org.osgi.framework;version=\"1.6\"," + 
    // ...
    "android," + 
    // ...
    "javax.crypto," + 
    // ...
    "org.apache.commons.logging";

Map<String, Object> config = new HashMap<String, Object>();
config.put(Constants.FRAMEWORK_SYSTEMPACKAGES, SYSTEM_PACKAGES);
Framework framework = new Felix(config);
framework.start();
 类似资料:
  • 我想做以下解决方案:Apache Felix Weld 2 . 2 . 10 . SP1 for Java SE。为此,我想运行焊接档案中的一个例子-焊接-OSGi-油漆。 我使用felix 4.6.1,java8,我有以下捆绑包,我安装并启动: 此外,我有以下额外的包 我运行程序,这就是我得到的 org.osgi.framework。BundleException:无法启动碎片束。在org.ap

  • 使用1.01.0等捆绑版本合法吗?找不到有关如何工作的任何信息。我使用OSGI的Apache Felix实现。

  • 我已经创建了我的第一个OSGi服务,并试图将其部署到ApacheFelix上。之后,当我查看系统控制台时,我看到服务未激活,出现了一些问题: 因此,我查看了哪个jar包含这些包,这是来自spring-ws-core-2.1.2.RELEASE。jar,它也是一个OSGi包。我也部署了这个,但再次出现以下错误消息: 这也是一个依赖项,这次是spring-webmvc-3.2.17.RELEASE.j

  • 我试图在Felix中添加一个新的OSGI包(没有Karaf)作为ActiveMQ客户端(消息发送方)。 ActiveMQ客户端在非OSGI环境中运行良好。但当我在Felix中使用相同的代码(稍加修改)时,它会抛出以下错误: org.osgi.framework.捆绑异常:无法解决com.packtpub.felix.bookshelf-库存-impl-mock[7](R 7.3):缺少需求[com

  • 我是OSGi的新手。我正在使用Apache Felix。我已经构建了一个捆绑包,并且具有依赖性。当我尝试使用启动它会给我这个错误。 org . OSGi . framework . bundle exception:无法解析lk . ucsc . research . belly runner[20](R 20.0):缺失需求[lk . ucsc . research . belly runner

  • 对于Java SE应用程序,我使用Apache Felix和weld-osgi。问题是在注入的bean中,我使用了包< code > javax . enterprise . context . ApplicationScoped 中的< code>@ApplicationScoped。但是在< code > weld-OSGi-bundle-2 . 1 . 2 . final 中没有这个包。 此