【发布时间】:2016-08-12 10:47:07
【问题描述】:
在 Weblogic 12.2.1 上,我正在尝试使用管理控制台将简单的 OSGi Bundle 部署为 war 文件,但会抛出带有以下日志的 NPE。
Caused by: java.lang.NullPointerException:
at org.apache.felix.framework.cache.JarRevision.getMainAttributes(JarRevision.java:210)
at org.apache.felix.framework.cache.JarRevision.getManifestHeader(JarRevision.java:104)
at org.apache.felix.framework.BundleImpl.createRevision(BundleImpl.java:1235)
at org.apache.felix.framework.BundleImpl.<init>(BundleImpl.java:112)
at org.apache.felix.framework.Felix.installBundle(Felix.java:2905)
at org.apache.felix.framework.BundleContextImpl.installBundle(BundleContextImpl.java:165)
作为先决条件,我创建了基于 Apache Felix 的 OSGi 框架(服务->OSGi 框架)。我的 Bundle 是一个 API 项目,它包含几个接口,我将其包装在 WAR 文件中。 war文件结构如下:
myapi-project.war
- META-INF
- WEB-INF
- classes
- lib
- osgi-lib
- api-project.jar
- weblogic.xml
Weblogic.xml 内容为:
<wls:osgi-framework-reference>
<wls:name>CPS-OSGi</wls:name>
<wls:application-bundle-version>1.0</wls:application-bundle-version>
<wls:application-bundle-symbolic-name>cpsservices.approval</wls:application- bundle-symbolic-name>
<wls:bundles-directory>osgi-lib</wls:bundles-directory>
API 项目 MENIFEST.MF 内容:
Manifest-Version: 1.0
Implementation-Vendor: BAML
Implementation-Title: CPS API
Implementation-Version: 1.0.0
Bundle-ManifestVersion: 2
Bundle-SymbolicName: cpsservices.api
Bundle-Name: cpsservices api bundle
Bundle-Vendor: BAML
Bundle-Version: 1.0.0
Export-Package: com.bofa.cp.core, com.bofa.cp.services
Bundle-Activator: com.bofa.cp.core.Activator
我已尝试添加其他 MENIFEST 属性,但这并没有解决问题。在过去的两天里,我一直坚持这一点。任何帮助表示赞赏。 谢谢。
更新:这是应用服务器 Oracle 12.2.1 附带的 org.apache.felix.org.apache.felix.main.jar v4.4 中 JarRevision 类的屏幕截图 -
Felix 由于某种原因无法读取 MENIFEST.MF 文件的可能原因。为了确认这种理解,我更改了文件中的 Bundle Symbolic 名称,但这并没有改变异常。 猜猜我很接近......
【问题讨论】:
标签: osgi weblogic12c apache-felix