【发布时间】:2016-02-03 18:08:04
【问题描述】:
我已经通过 Apache Felix Maven Bundle Plugin 创建了 OSGi 包。输出 jar 文件看起来不错,MANIFEST.MF 如下:
Manifest-Version: 1.0
Export-Package: cz.bach.entities.ui.extensions;uses:="org.osgi.framewo
rk,cz.bach.entities.ui.extensions.output,org.slf4j,cz.bach.dataframe2
.domain,com.vaadin.ui,cz.bach.entities.ui.commons,cz.bach.entities.ui
.actions,com.vaadin.server,org.springframework.beans.factory.annotati
on,cz.bach.entities.ui.lang,cz.bach.entities.ui.output,org.aspectj.la
ng,org.springframework.transaction.aspectj,org.aspectj.lang.reflect,o
rg.springframework.transaction.annotation,org.aspectj.runtime.reflect
,org.springframework.beans.factory.aspectj,org.springframework.beans,
org.springframework.context,org.springframework.beans.factory.config,
com.vaadin.event,org.apache.log4j,org.osgi.framework.launch"
Ignore-Package: cz.bach.entities.ui.extensions
Bundle-ActivationPolicy: lazy
Built-By: firzen
Tool: Bnd-0.0.357
Bundle-Name: extensions
Created-By: Apache Maven Bundle Plugin
Build-Jdk: 1.6.0_45
Bundle-Version: 0.0.1.SNAPSHOT
Bnd-LastModified: 1446557486350
Bundle-Activator: cz.bach.entities.ui.extensions.Activator
Bundle-ManifestVersion: 2
Bundle-SymbolicName: isai-extensions
Import-Package: com.vaadin.event;resolution:=optional;version="7.5",co
m.vaadin.server;resolution:=optional;version="7.5",com.vaadin.ui;reso
lution:=optional;version="7.5",cz.bach.dataframe2.domain;resolution:=
optional,cz.bach.entities.ui.actions;resolution:=optional,cz.bach.ent
ities.ui.commons;resolution:=optional,cz.bach.entities.ui.extensions.
output;resolution:=optional,cz.bach.entities.ui.lang;resolution:=opti
onal,cz.bach.entities.ui.output;resolution:=optional,org.apache.log4j
;resolution:=optional,org.aspectj.lang;resolution:=optional,org.aspec
tj.lang.reflect;resolution:=optional,org.aspectj.runtime.reflect;reso
lution:=optional,org.osgi.framework;resolution:=optional;version="1.3
",org.osgi.framework.launch;resolution:=optional;version="1.1",org.sl
f4j;resolution:=optional;version="1.7",org.springframework.beans;reso
lution:=optional;version="3.1",org.springframework.beans.factory.anno
tation;resolution:=optional;version="3.1",org.springframework.beans.f
actory.aspectj;resolution:=optional;version="3.1",org.springframework
.beans.factory.config;resolution:=optional;version="3.1",org.springfr
amework.context;resolution:=optional;version="3.1",org.springframewor
k.transaction.annotation;resolution:=optional;version="3.1",org.sprin
gframework.transaction.aspectj;resolution:=optional;version="3.1"
但是当我在我的项目中通过这段代码加载这个 jar 文件时..
public void installPackage(File f) throws BundleException {
Bundle b = ctx.installBundle("file:" + f.getPath());
System.out.println("starting bundle: " + b + ", location: " + f.getPath());
b.start();
}
.. 输出是:
starting bundle: unknown_0.0.0 [3], location: /tmp/isai-extensions.jar
这意味着 bundle 的符号名称是 null,尽管它是在 MANIFEST.MF 中通过以下行指定的:Bundle-SymbolicName: isai-extensions。此外,当我调用b.start() 时,不会引发异常。这是很奇怪的行为..如何正确设置符号名称?
提前致谢!
【问题讨论】: