【问题标题】:How to configure a system-wide package in osgi?如何在 osgi 中配置系统范围的包?
【发布时间】:2010-12-02 14:11:22
【问题描述】:

我需要为某些捆绑包提供一个库。该库使用 RMI,因此它需要(至少据我所知)使用系统类加载器才能工作(我尝试“osgi-fy”该库,这会导致运行时出现类转换异常)。所以我所做的是从使用该库的包中删除依赖项,使用属性 jars.extra.classpath 中包含的库(在 eclipse 项目的 build.properties 中)编译它们。

然后我添加了

org.osgi.framework.bootdelegation=com.blipsystems.*

在 felix 配置文件中,使用以下命令行启动 felix 容器:

java -classpath lib/blipnetapi.jar -jar bin/felix.jar

..这反过来又为 blipnetapi.jar 库的一个类抛出了 NoClassDefFoundException:

错误:错误启动文件:/home/frza/felix/load/BlipnetApiOsgiService_1.0.0.1.jar(org.osgi.framework.BundleException:捆绑BlipnetApiOsgiService [30]中的激活器启动错误。) java.lang.NoClassDefFoundError:com/blipsystems/blipnet/api/util/BlipNetSecurityManager 在 java.lang.Class.getDeclaredConstructors0(本机方法) 在 java.lang.Class.privateGetDeclaredConstructors(Class.java:2389) 在 java.lang.Class.getConstructor0(Class.java:2699) 在 java.lang.Class.newInstance0(Class.java:326) 在 java.lang.Class.newInstance(Class.java:308) 在 org.apache.felix.framework.Felix.createBundleActivator(Felix.java:3525) 在 org.apache.felix.framework.Felix.activateBundle(Felix.java:1694) 在 org.apache.felix.framework.Felix.startBundle(Felix.java:1621) 在 org.apache.felix.framework.Felix.setActiveStartLevel(Felix.java:1076) 在 org.apache.felix.framework.StartLevelImpl.run(StartLevelImpl.java:264) 在 java.lang.Thread.run(Thread.java:619) 引起:java.lang.ClassNotFoundException:com.blipsystems.blipnet.api.util.BlipNetSecurityManager 在 org.apache.felix.framework.ModuleImpl.findClassOrResourceByDelegation(ModuleImpl.java:726) 在 org.apache.felix.framework.ModuleImpl.access 100 美元(ModuleImpl.java:60) 在 org.apache.felix.framework.ModuleImpl$ModuleClassLoader.loadClass(ModuleImpl.java:1631) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:251) 在 java.lang.ClassLoader.loadClassInternal(ClassLoader.java:319) ... 11 更多

所以我的问题是:我错过了什么吗?我做错了什么?

【问题讨论】:

    标签: osgi boot delegation


    【解决方案1】:

    问题出在您的命令行中。如果指定 -jar 选项,java 将忽略 -classpath 选项。如果您需要使用 -jar 指定类路径,则它需要在您启动的 jar 的清单中。在这里,我只需将两个 jar 放在类路径中并手动指定主类(查看 Felix jar 的确切名称)。

    【讨论】:

      猜你喜欢
      • 2021-06-08
      • 2013-11-03
      • 2012-09-01
      • 2012-04-30
      • 2011-01-12
      • 2014-12-10
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      相关资源
      最近更新 更多