2

我正在尝试使用 PAX-URL,以便可以即时组装非打包的捆绑包。

如果我将 pax-url-assembly-1.2.1.jar 放在自动启动包中,然后输入

安装程序集:路径/到/我的/文件夹

一切正常。问题是,我想使用 > felix.auto.start.1=assembly:path/to/my/folder 在配置文件中给 felix 那些文件夹

如果这样做,我会收到“未知协议:程序集”异常。

我尝试在级别 1 加载 PAX-URL 并将所有其他捆绑包的默认启动级别设置为 10。不会有帮助。我认为是“系统包”本身在加载任何包之前读取配置,因此“程序集”不被理解。

我的猜测是我需要告诉 Felix 在 Felix 本身启动时加载 PAX-URL。

有任何想法吗?我是不是全都搞错了?:)

谢谢!

4

2 回答 2

4

尝试将 PAX-URL 放入bundleApache Felix 的文件夹中并使用-Djava.protocol.handler.pkgs=org.ops4j.pax.url选项启动它。

是一篇描述 Eclipse 中的 Apache Felix 开发的帖子

于 2011-07-29T14:14:37.740 回答
2

还有一件事!如果您使用带有 maven-SCR-plugin 的声明式服务,pax-url 将找不到 servicecomponents.xml,因为该插件默认将其直接放在目标中(而不是目标/类)。为此,您必须在 scr 插件中添加一个配置节来更改输出目录,如下所示:

<plugin>
    <groupId>org.apache.felix</groupId>
    <artifactId>maven-scr-plugin</artifactId>
    <version>1.7.0</version>
    <executions>
        <execution>
            <id>generate-scr-scrdescriptor</id>
            <goals>
                <goal>scr</goal>
            </goals>
            <configuration>
                <!-- Without this, PAX-URL won't work -->
                <outputDirectory>target/classes</outputDirectory>
            </configuration>
        </execution>
    </executions>
</plugin>
于 2011-08-04T11:37:37.073 回答