我正在尝试使用PAX-URL,因此我可以动态组装非打包的包。
如果我将pax-url-assembly-1.2.1.jar放入autostart包中,然后输入
一切正常。麻烦的是,我想使用>给配置文件中的felix这些文件夹。 felix.auto.start.1 =组件:路径/到/我/文件夹安装程序集:path / to / my / folder
如果我这样做,我会收到“未知协议:程序集”异常。
我尝试在第1级加载PAX-URL并将所有其他包的默认启动级别设置为10.无济于事。我认为这是“系统软件包”本身在加载任何软件包之前读取配置,因此不理解“程序集”。
我猜我需要告诉Felix在Felix本身启动时加载PAX-URL。
有什么想法吗?我弄错了吗? :)
谢谢!
答案 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>