我希望能够从 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。