我希望能够从Eclipse轻松调试在Apache Karaf中运行的OSGi包。到目前为止,我发现的最简单的方法是创建一个启动Karaf的Java Application启动器。如果先前安装了捆绑包,那么我可以设置断点,即使在激活器中也是如此,一切都很好。
问题是,当对代码进行更改,调用mvn install,然后调用Eclipse Karaf启动程序时,我正在运行该捆绑包的旧缓存版本。我从命令行运行了Karaf,使用Maven URL安装我的bundle,并使用dev:watch成功。但我发现dev:watch URL不会保留。因此,当从Eclipse启动Karaf时,没有观察到的URL(当Karaf关闭时之前丢失的URL)并且没有安装新版本的捆绑包。
有没有办法让dev:看看URL是持久的?我查找了可能包含URL的属性,甚至是可以用来指定没有运气的URL的Karaf命令行选项。我甚至尝试将dev:watch命令添加到etc / shell.init.script但我在Karaf启动时收到此消息“初始化脚本错误:找不到命令:dev:watch。”我认为这意味着命令也运行了早在Karaf启动序列中(开发功能尚未开始?)。
任何帮助都会受到赞赏,甚至是我没有考虑过从Eclipse中轻松调试在Karaf中运行的bundle的替代方法。目标是避免每次代码更改时都需要使用osgi:install等手动命令。
答案 0 :(得分:1)
Karaf团队现在也在努力与EIK进行更好的整合,但目前它还没有像我们需要的那样深度整合。 因此,您提供的方法基本上是进行调试的最佳方式。 用maven构建你的应用程序,做一个开发:看看你的karaf启动和运行。 由于dev:watch是一个“开发时间”命令,因此它不是持久性的。但是您仍然可以选择历史记录,当然您可以为命令提供多个捆绑ID。