gpt4 book ai didi

java - Apache 菲利克斯 6.0.1 : BundleException on init

转载 作者:行者123 更新时间:2023-12-02 10:36:34 27 4
gpt4 key购买 nike

使用 Apache Felix 6.0.1 时,我在初始化 OSGi 框架时遇到以下错误:

ERROR: Error parsing system bundle statement.
org.osgi.framework.BundleException: Exported package names cannot be zero length.
at org.apache.felix.framework.util.manifestparser.ManifestParser.normalizeExportClauses(ManifestParser.java:865)
at org.apache.felix.framework.util.manifestparser.ManifestParser.<init>(ManifestParser.java:217)
at org.apache.felix.framework.ExtensionManager$ExtensionManagerRevision.update(ExtensionManager.java:977)
at org.apache.felix.framework.ExtensionManager$ExtensionManagerRevision.access$000(ExtensionManager.java:885)
at org.apache.felix.framework.ExtensionManager.updateRevision(ExtensionManager.java:378)
at org.apache.felix.framework.Felix.init(Felix.java:744)
at org.apache.felix.framework.Felix.init(Felix.java:637)

我在 Apache Felix 5.x 中没有遇到此错误

除了我的可执行 JAR(它根本不是 OSGi 包)之外,我找不到任何具有空包名称声明的 JAR。

为什么我会收到此错误?

更新

问题似乎与 Maven Bundle Plugin v4.1.0 的捆绑目标有关

在一个带有 bundle 的启动 JAR 中,我有:

        <plugin>
<groupId>org.apache.felix</groupId>
<artifactId>maven-bundle-plugin</artifactId>
<extensions>true</extensions>
<configuration>
<versions>
<module.b.osgi.version.clean>${project.version}</module.b.osgi.version.clean>
</versions>
</configuration>
<executions>
<execution>
<phase>generate-sources</phase>
<goals>
<goal>cleanVersions</goal>
</goals>
</execution>
</executions>
</plugin>

在资源过滤设置为 true 的属性文件中,我有:

org.osgi.framework.system.packages.extra=${module-b.packages}

module-b.packages=${module-a.packages}, \
org.mymodule.b;version="${module.b.osgi.version.clean}", \
${foo-${foo.specification.version}}

在生成的目标/类目录中,我有预期的:

org.osgi.framework.system.packages.extra=${module-b.packages}

module-b.packages=${module-a.packages}, \
org.mymodule.b;version="0.14.0.SNAPSHOT", \
${foo-${foo.specification.version}}

但是在 JAR 中它突然看起来像这样:

org.osgi.framework.system.packages.extra=${module-b.packages}

module-b.packages=${module-a.packages}, \
org.mymodule.b;version="0.14.0.SNAPSHOT", \

不知何故 ${foo-${foo.specation.version}} 被剥离为空字符串!

更新2

由于这种情况发生在启动代码中,我当前的解决方法是将打包类型更改回 jar。 OSGi 干净版本仍然会被替换,但 Manifest 文件不再包含任何 OSGi 条目。

最佳答案

我认为这是 Maven Bundle 插件中的回归错误。

我在这里提交了一个问题:https://issues.apache.org/jira/browse/FELIX-5980

关于java - Apache 菲利克斯 6.0.1 : BundleException on init,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53253546/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com