【问题标题】:How do I attach the sources for a library bundle in OSGi/Equinox/Eclipse?如何在 OSGi/Equinox/Eclipse 中附加库包的源?
【发布时间】:2012-04-01 00:07:51
【问题描述】:

created a library bundle for commons-lang3 这很好用。我可以构建包,添加依赖项,然后在我的插件中使用这个包中的所有类。

但我在调试器中看不到源代码。

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

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

【问题讨论】:

    标签: eclipse osgi bundle equinox


    【解决方案1】:

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

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

    顺便说一句,我们的方法受到了 UNIX 可执行文件的启发,这些可执行文件通常包含额外的调试符号,而 strip 命令可以删除它们以在需要时创建更小的可执行文件。

    【讨论】:

    • 只是为了确保我理解正确:解压缩源 JAR 并将文件复制到文件夹 OSGI-OPT/src 就足够了?我不必将文件夹添加到build.propertiesMANIFEST.MF
    • 是的,如果你碰巧使用 bnd,只需添加 -sources: true
    • 如果在 pom.xml 中使用 maven-bundle-plugin,请执行 <_sources>true。还要确保你已经设置了 bundle。 Eclipse 中的另一个问题是确保将包含 OSGI-OPT/src 的包添加到某些 Eclipse 项目的类路径中,正如 BJ Hargrave 在这里解释的“如何在调试时查看运行时包代码?”,2015 年 2 月,groups.google.com/d/topic/bndtools-users/tW4e-4TUOqw/discussion。跨度>
    【解决方案2】:

    如果您将源文件添加到它们自己的 jar 中,则使用“Eclipse-SourceBundle”条目创建一个 META-INF/MANIFEST.MF 文件,该条目指定库包的符号名称。下面是我从 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
    

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

    【讨论】:

    • 所以我需要创建一个 second 包,我不能简单地将源添加到库包中吗?
    • 我只见过它以 2 个捆绑包的形式完成,这对我来说很有意义,因为您通常不希望在完成的应用程序中部署源代码。您也许可以将源代码和“Eclipse-SourceBundle”条目添加到您的库包中,但我没有尝试过。
    • @NickWilson 实际上,我通常确实想在完成的应用程序中部署源代码。这样做有很多好处,如果我正在构建一个封闭源代码的商业应用程序,我只会不会这样做。有关将源包含在主包中的方法,请参见下面的答案。
    猜你喜欢
    • 2014-11-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 2012-01-22
    • 2011-11-01
    • 2011-02-16
    • 2012-08-02
    • 1970-01-01
    相关资源
    最近更新 更多