gpt4 book ai didi

eclipse - Eclipse 包和插件有什么区别?

转载 作者:行者123 更新时间:2023-12-03 23:04:05 24 4
gpt4 key购买 nike

在 Dependencies 选项卡中,我可以在插件和包之间进行选择。
他们之间有什么区别?对于 org.eclipse.compare ,我在导入的包和插件中都有它。

enter image description here

enter image description here

我在plugins目录下找到jar文件,但是不知道org.eclipse.compare的包文件在哪里。

enter image description here

在导出菜单中,似乎只有导出到 jar,而不是导出插件或包。如何导出包?

enter image description here

添加

基于这篇文章 - How to import a package from Eclipse?和shiplu的回答。这就是我明白的。如果我错了,请纠正我。

  • 在 Eclipse 中,当我使用外部类时,我可以使用快速助手或组织导入 (Ctrl-Shift-O) 来解析引用。 Eclipse 添加包含 Imported Packages 中的类的包对于我正在进行的项目。一个包可以包含多个类(类型)。 Eclipse 了解包含该包的插件,并解决引用问题。
  • 一个插件(jar 文件)可以包含多个包。通过在依赖项选项卡中指定所需的插件,我们可以引用eclipse IDE中所有java项目的所有包(以及包中的类)。

  • 根据我的经验,我必须添加所有依赖项才能使 headless RCP 独立( http://prosseek.blogspot.com/2012/12/headless-rcp-standalone.html )。

    最佳答案

    Eclipse 插件基本上是一个带有附加 plugin.xml 文件的 OSGi 包,Eclipse IDE 可以理解和解释该文件。

    因此,您的问题的答案在于 OSGi 规范和 OSGi 编程模型,因为简单地说,Eclipse 是一个运行在称为 Equinox 的 OSGi 实现上的应用程序。

    OSGi 是关于拥有模块化应用程序的,因此它定义了多个级别的模块化。
    一个这样的级别是捆绑级别(模块级别)的模块化,更细粒度的级别是包级别的模块化。

    因此,您可以拥有由 db-bundle(提供数据存储服务)、app-domain-bundle(提供应用程序域服务)和 remote-bundle(例如,它通过 REST 向 Web 公开您的应用程序)。

    然后你说remote-bundle 依赖于domain-bundle,而domain-bundle 又依赖于db-bundle。
    这一切都很好,但削弱了 OSGi 提供的固有模块化,因为您基本上将应用程序限制为 db-bundle 和 remote-bundle 的特定实现,即它们提供的服务的特定实现。

    相反,您可以不在包之间而是在包之间建立上述依赖关系,即建立服务级别的依赖关系。
    然后你说 domain-bundle 需要 dbstore.service 包才能运行,它并不关心哪个包提供它,它只需要这个服务的一个实例才能工作。因此,您可以拥有多个提供 dbstore.service 实现的包,并且域包可以在运行时选择要使用的服务。

    用几句话来解释 OSGi 概念真的很难,我真的建议你在网上搜索一下,甚至看看 OSGi 规范。

    另一种解释方式是说 bundle/plug-in 是一个具有特定结构和元数据描述符(MANIFEST.MF 和 plugin.xml)的 jar 文件,它用 Java 语言概念描述了它的内容——哪些 java 封装和服务于这个特定的jar 包含并将公开给 OSGi 运行时,以便它们可以被其他包使用。 IE。捆绑包是物理可部署实体,而描述符是有关实际部署内容的元数据。

    编辑:
    包或服务级别的依赖也有一些缺点,正如 Lii 在下面的评论中指出的那样,主要是它增加了依赖模型的复杂性和动态性。看看下面她或他的评论 - 值得一读!

    关于eclipse - Eclipse 包和插件有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13960450/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com