如何在OSGi/Equinox/Eclipse中附加库包的源代码?

Aar*_*lla 4 eclipse osgi bundle equinox

创建了一个库包commons-lang3,这很好用.我可以构建bundle,添加一个依赖项,然后在我的插件中使用这个bundle中的所有类.

但我没有看到调试器中的源代码.

为此库包创建源包的最简单方法是什么?

PS:库包是一个包含原始JAR文件的插件; Eclipse不会再次编译源代码,只是将现有的JAR添加到类路径中.

Nei*_*ett 5

您可以OSGI-OPT/src在捆绑包的路径下包含源; 然后他们将被Eclipse调试器看到(不确定其他IDE,因为我只使用Eclipse).我觉得这比创建一个单独的源包更简单,因为一个artefact比两个更容易管理,如果你使用BndBndtools构建,我们默认创建这样的包.

在极少数情况下,当您需要部署到资源受限的环境时,您只需OSGI-OPT从捆绑包中删除该目录; 此名称是可选数据的约定,可以在不影响捆绑操作的情况下将其删除.

顺便提一下,我们的方法受到UNIX可执行文件的启发,UNIX可执行文件通常包含额外的调试符号,而strip命令则删除它们以在需要时创建较小的可执行文件.


Nic*_*son 2

如果将源文件添加到它们自己的 jar 中,则创建一个 META-INF/MANIFEST.MF 文件,其中包含“Eclipse-SourceBundle”条目,该条目指定库包的符号名称。下面是我从 Felix jar 中得到的一个例子:

Manifest-Version: 1.0
Eclipse-SourceBundle: org.apache.felix.main;version="4.0.1";roots:="."
Bundle-Version: 4.0.1
Bundle-Name: Apache Felix Framework
Bundle-ManifestVersion: 2
Bundle-Vendor: The Apache Software Foundation
Bundle-SymbolicName: org.apache.felix.main.source
Run Code Online (Sandbox Code Playgroud)

为了能够在 Eclipse 中查看源代码,请确保此源 jar 位于您的 PDE 目标中(Windows->首选项->插件开发->TargetPlatform)。如果您使用 Eclipse 本身作为目标平台,只需将其放入 Eclipse 插件文件夹中即可。