无法在Felix config.properties中将PAX-URL的汇编协议与自动启动的捆绑包一起使用

时间:2011-02-24 10:42:57

标签: osgi pax

我正在尝试使用PAX-URL,因此我可以动态组装非打包的包。

如果我将pax-url-assembly-1.2.1.jar放入autostart包中,然后输入

  

安装程序集:path / to / my / folder

一切正常。麻烦的是,我想使用>给配置文件中的felix这些文件夹。 felix.auto.start.1 =组件:路径/到/我/文件夹

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

我尝试在第1级加载PAX-URL并将所有其他包的默认启动级别设置为10.无济于事。我认为这是“系统软件包”本身在加载任何软件包之前读取配置,因此不理解“程序集”。

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

有什么想法吗?我弄错了吗? :)

谢谢!

2 个答案:

答案 0 :(得分:4)

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

Here是一篇描述Eclipse中Apache Felix开发的文章

答案 1 :(得分: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>