2

我希望能够从 Eclipse 轻松调试在 Apache Karaf 中运行的 OSGi 包。到目前为止,我确定的最简单的方法是创建一个启动 Karaf 的 Java 应用程序启动器。如果之前安装了包,那么我可以设置断点,即使在激活器中,一切都很好。

问题是,当对代码进行更改时,调用 mvn install,然后调用 Eclipse Karaf 启动器,我正在运行捆绑包的旧缓存版本。我玩过从命令行运行 Karaf,使用 Maven URL 安装我的包,并成功使用 dev:watch。但我发现 dev:watch URL 没有保留。因此,当从 Eclipse 启动 Karaf 时,没有观察到的 URL(以前的 URL 在 Karaf 关闭时丢失)并且没有安装新版本的包。

有没有办法让 dev:watch URL 持久化?我寻找可能包含 URL 的属性,甚至是可用于指定 URL 的 Karaf 命令行选项,但没有运气。我什至尝试将 dev:watch 命令添加到 etc/shell.init.script,但我在 Karaf 启动时收到此消息“初始化脚本错误:找不到命令:dev:watch。” 我认为这意味着该命令在 Karaf 启动序列中运行得太早(开发功能尚未启动?)。

任何帮助都将不胜感激,即使是我没有考虑过的其他方式来轻松调试在 Eclipse 中运行在 Karaf 中的包。目标是避免每次代码更改时都需要使用手动命令,例如 osgi:install。

4

1 回答 1

1

Karaf 团队现在也在努力与 EIK 更好地集成,但目前它还没有达到需要的深度集成。因此,您提供的方式基本上是进行调试的最佳方式。使用 maven 构建您的应用程序,在您的 karaf 启动并运行时执行 dev:watch。由于 dev:watch 是一个“开发时间”命令,它并不打算持久化。但是您仍然可以选择历史记录,当然您可以为命令提供多个捆绑包 ID。

于 2012-10-02T07:39:00.923 回答