我有一个非常简单的 OSGI 应用程序,它只监听注册/取消注册并向标准输出发送一些消息。
我的应用程序中有一个简单的 Spring 初始化 bean。我使用maven bundle插件将jar打包并放入felix。这是 pom 的摘录:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>3.1.0.RELEASE</version>
<type>jar</type>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<version>2.2.0</version>
<extensions>true</extensions>
<configuration>
<instructions>
<Export-Package>org.spring.*</Export-Package>
<Bundle-Activator>foo.bar.Activator</Bundle-Activator>
</instructions>
</configuration>
</plugin>
</plugins>
</build>
该项目编译得很好,可以很好地部署到 Felix 中,但是,当激活器被调用时,它会抱怨缺少这样的依赖项:
捆绑 foo.bar.project [56] 中未解决的约束:无法解决 56.0:缺少要求 [56.0] osgi.wiring.package;(&(osgi.wiring.package=org.springframework.context)(version>=3.1.0)(!(version>=4.0.0)))
我尝试更改此行:
org.spring.*
对此:
*
felix 在其中抱怨 android-dalvik 不存在,所以我完全一无所知。
知道如何在不使用 Spring DM 的情况下将 Spring 包含在 OSGI 项目中吗?
编辑:这是生成的清单抱怨的内容(来自网络控制台)
导出的包
foo.bar.osgi foo.bar.service foobar.tracker
Imported Packages org.osgi.framework,version=[1.6,2) from org.apache.felix.framework (0) org.osgi.util.tracker,version=[1.5,2) from org.apache.felix.framework ( 0) ERROR: org.springframework.context,version=[3.1,4) -- 无法解决 ERROR: org.springframework.context.support,version=[3.1,4) -- 无法解决
清单标头 Bnd-LastModified:1339014840268
构建-Jdk:1.6.0_32
建造者: fooBar
捆绑激活器:foo.bar.osgi.Activator
捆绑清单版本:2
捆绑名称:fooBar
Bundle-SymbolicName:foo.bar.OSGIProject
捆绑版本:0.20.0.SNAPSHOT
创建者:Apache Maven Bundle Plugin
导出包:foo.bar.osgi.tracker;使用:="foo.bar.osgi.service, org.osgi.util.tracker, org.osgi.framework",
foo.bar.osgi; 使用:="org.springframework.context.support, org.springframework.context, org.osgi.framework", foo.bar.osgi.service
进口包装:
org.osgi.framework;版本="[1.6, 2)", org.osgi.util.tracker; 版本="[1.5, 2)", org.springframework.context; 版本="[3.1, 4)", org.springframework.context.support; version="[3.1, 4)" 清单版本:1.0 工具:Bnd-1.15.0
这是我改变pom的时候
<configuration>
<instructions>
<Include-Resource>src/main/resources/spring-beans.xml</Include-Resource>
<Bundle-Activator>nl.synovite.scheduled.osgi.Activator</Bundle-Activator>
<Import-Package>*</Import-Package>></instructions>
</configuration>