在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 Framework(Services-&gt; OSGi Frameworks)。 My Bundle是一个API项目,包含很少的接口,我将其包装在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属性,但这并没有解决问题。最近2天我被困在这一点上。任何帮助表示赞赏。 感谢。
更新:以下是appg服务器Oracle 12.2.1附带的org.apache.felix.org.apache.felix.main.jar v4.4中JarRevision类的屏幕截图 -
由于某些原因,这个Felix无法读取MENIFEST.MF文件的可能原因。为了证实这一点,我更改了文件中的Bundle Symbolic名称,但这并没有改变异常。 猜我很接近......
答案 0 :(得分:0)
解决了这个问题。猜猜 - 在MANIFEST.MF文件名中输入错误(创建文件名为mEnifest.mf)。我需要休息一下:))