从Jar

时间:2018-06-01 05:45:34

标签: jar osgi aem cq5 manifest.mf

我使用命令jar cvfm test5.jar manifest.txt IngrianNAE-8.4.2.000.p02.jar将jar转换为OSGI包。  当我在清单文件中添加“Export-Package”时,不会创建包,我会收到以下错误:

java.io.IOException: invalid header field
        at java.util.jar.Attributes.read(Attributes.java:410)
        at java.util.jar.Manifest.read(Manifest.java:199)
        at java.util.jar.Manifest.<init>(Manifest.java:69)
        at sun.tools.jar.Main.run(Main.java:176)
        at sun.tools.jar.Main.main(Main.java:1288)

如果我删除Export-Package或将其标记放在清单文件的末尾,则会在创建的包中创建,但在我在AEM上部署时,Export-Packages在创建的包中不可见。使用以下清单文件:Manifest-Version:1.0

Bnd-LastModified: 1527751846288
Build-Jdk: 1.8.0_161
Built-By: 312847
Bundle-Description: Test
Bundle-ManifestVersion: 2
Bundle-Name: Test Bundle
Bundle-SymbolicName: test
Bundle-Version: 1.1.1.4
Export-Package: com.ingrian.security.nae
Created-By: Apache Maven Bundle Plugin

2 个答案:

答案 0 :(得分:0)

如果您使用Intellij Ultimate 2020.1: 我在设置->插件

中禁用了所有osgi插件

答案 1 :(得分:-1)

您错过了manifest.mf文件中的Bundle-ClassPath: .,test5.jar条目。这基本上将原始jar嵌入到创建的包中,从而使导出包可用。

同时确保com.ingrian.security.naetest5.jar中提供的有效包。

有关如何从jar文件here创建捆绑包的详细信息,您可以找到有关如何构建清单文件here的信息。