gpt4 book ai didi

java - 是否可以在具有不同 ID 的 Eclipse 插件中使用相同的包和类名?

转载 作者:行者123 更新时间:2023-12-01 17:30:44 27 4
gpt4 key购买 nike

我想创建该插件的“克隆”。我将更改插件 ID 以同时加载它们,但我应该更改类的名称吗? Eclipse 是否可以为每个插件使用不同的类路径,或者它只是从单个堆中的包中加载所有类?

最佳答案

这是否有效取决于您在问题中未指定的因素,因此我将向您介绍类加载在 Eclipse 中如何工作的背景知识,您可以自行决定。

Eclipse 在 OSGi 之上运行。每个 Eclipse 插件都是一个 OSGi 包。每个包都有自己的类加载器。该类加载器查看 bundle 中包含的类以及来自 bundle 依赖项的类。包有两种指定依赖关系的方法。这两种方法都通过 bundle 的 MANIFEST.MF 文件中的条目来工作。一种方法是使用 Require-Bundle 构造来依赖于整个其他包。使用此方法, bundle 将看到其依赖项通过 Export-Package 导出的所有包。第二种方法是使用Import-Package。使用此方法, bundle 将找到任何 bundle 通过 Export-Package 导出的包。您还可以在生产者端对 bundle 和包进行版本控制,并在依赖项端限制版本。

因此,有了这些知识,您需要问自己这些问题......

  1. 是您正在克隆并通过 Export-Package 导出任何包的 bundle 。如果没有,那就没问题了。

  2. 当前哪些 bundle 指定您的原始 bundle 并将通过 Require-Bundle 指定克隆?您试图避免的是单个 bundle 在 Require-Bundle 中同时指定 Bundle.Original 和 Bundle.Clone 的情况。如果需要进行这样的安排,您将必须重命名克隆的包。

  3. 最后要检查的是任何 bundle 是否在任何导出包上使用了 Import-Package。如果是这样,您将需要以不同的方式对原始包和克隆包进行版本控制。这发生在 Export-Package 指令中。您还需要在 Import-Package 指令中仔细指定版本约束,以便它与原始版本或克隆版本相匹配。未能对包进行版本控制并限制导入将导致在运行时找到哪个版本方面出现看似随机的行为。同样,如果单个下游包需要导入原始包和克隆包,您将需要重命名克隆包。

关于java - 是否可以在具有不同 ID 的 Eclipse 插件中使用相同的包和类名?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11202548/

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