繁体   English   中英

在Eclipse插件中导出jar库

[英]Exporting jar libraries in an Eclipse plugin

我正在研究具有多个组件的Eclipse插件。 以前,这是一个插件,并且一切正常。 但是,我最近将其分为多个插件,它们是单个功能的一部分。

结构是该功能中有一堆插件。 有一个“核心”插件,其中包含通用代码和库。 其他所有插件都依赖于核心插件。

问题在于,尽管插件可以很好地编译,并且没有关于plugin.xml,清单等的警告,但由于缺少类,插件在运行时无法正常工作。 具体来说,我在核心插件中使用了Google Guava,并且在运行时找不到Guava jar中的类。 还有其他罐子,但这是第一个炸毁的罐子。

我尝试了几种方法来解决此问题:

  • 导出核心项目中的Guava jar中包含的软件包具有相同的结果:不起作用。
  • 将Guava jar放入每个插件都可以,但是由于额外的大小,这是不希望的。
  • 根据我的搜索,我可以在我的plugin.xml中添加一个<runtime>标记,由于我有清单,Eclipse会立即忽略该标记。 我还没有找到向清单添加等效设置的方法。

实际可行的唯一方法是创建一个库插件,该插件实质上将所有jar文件解包并合并。 这里的问题是我然后有了随机文件的混搭。 如果我要升级jar文件,则重新生成该项目很繁琐,而且我怀疑在搜索SVN历史记录以查找该项目时会变得很泥泞。

还有另一种方法可以轻松地删除更新的jar文件并使它以最小的更改工作吗?

导出核心项目中的Guava jar中包含的软件包具有相同的结果:不起作用。

您对此有疑问吗?

据我所知,在Eclipse Equinox中是OSGi容器,而在OSGi中,我们具有使用其他捆绑软件资源的功能。

因此,请确保在此处从正确的位置导出正确的内容。

可能其他捆绑软件无法识别从核心捆绑软件导出的类(请在此处检查所有子捆绑软件中的import-package),或者类加载器中发生了某些错误。

尝试在清单中使用“ Eclipse-Buddy策略”属性。 它可能会工作:-)

我要做的工作是:

  1. 创建一个Maven项目并将所有依赖项放在此处
  2. 编写代码,包括算法以及插件/应用程序的所有逻辑
  3. 生成项目。 您将有一个大的jar文件。 诸如“ myproject-with-dependencies.jar”之类的东西
  4. 在Eclipse中:
    1. 右键单击->现有JAR存档中的插件。 在此处输入图片说明
    2. 从步骤3中选择您的jar文件。
    3. 检查您的plugin.xml并仅导出所需的软件包(以避免在Osgi中使用ClassCastExpeption)
  5. 最后,从您拥有的其他插件中向该插件添加依赖项

笔记:

  • 这是我为了避免p2站点而使用的,也避免了捆绑在一起(特别是因为我使用Tycho来构建Eclipse插件)。
  • 这不是最佳解决方案,但可以节省大量时间。 相信我!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM