【问题标题】:Find version number of certain plugins in Eclipse在 Eclipse 中查找某些插件的版本号
【发布时间】:2017-09-17 10:52:19
【问题描述】:

更具体地说,我需要编写代码才能找到 Eclipse 版本号 (4.7.0)。我无法在文件(.eclipseproduct 或 about.mappings)中查找它,我需要进行 API 调用。

所以我想知道我是否能够通过一些Java程序找出插件org.eclipse.platform的版本号。

【问题讨论】:

  • 为什么不能从 .eclipseproduct 中读取?您是在 Eclipse 中作为插件还是附加到正在运行的实例?
  • 这段代码是在 Eclipse 插件中还是单独的 Java 程序中?
  • 嗨 greg-449 让我们假设一个单独的 Java 程序而不是插件。 PerDigre 一旦我有了 eclipse 版本,从 .eclipseproduct 读取它对我来说并不是最有效的解决方案。
  • 您可能需要更好地描述您的问题。您想在不同的进程中读取版本的 Eclipse 吗?这是来自单元测试吗?还是来自 RCPTT 或其他 GUI 测试人员?

标签: java eclipse eclipse-plugin eclipse-rcp


【解决方案1】:

我想最简单的方法是从系统属性中获取它,假设您在 Eclipse 中作为运行时工作台。

System.getProperty("eclipse.buildId")

如果您不在 Eclipse 上下文中,则可以使用“.eclipseproduct”之类的安装文件或通过调试器。

【讨论】:

  • Sop(System.getProperty("eclipse.buildId")) 为我返回 null。
  • 它是在 Eclipse 上下文中设置的,即运行时工作台。对我来说,它显示为“4.7.0.I20170612-0950”。
  • 在您的 ecipe.ini 文件中是否有 eclipse.buildId=4.7.4.7.0.I20170612-0950 ?
  • 不,那只是在运行的 Eclipse 实例中。
【解决方案2】:

您可以使用Platform::getBundle 获取给定符号名称的捆绑包(OSGi 运行时中插件的表示形式)。一旦你有了一个包,你可以查询它的版本。例如:

Bundle bundle = Platform.getBundle( "org.eclipse.ui.ide" );
System.out.println( bundle.getVersion() );

getBundle 要求 OSGi 运行时在所有已安装的包中搜索具有给定符号名称的包。

【讨论】:

  • 如果该捆绑包在我的清单文件中可用,这是否仅适用于插件?
  • 不,只要有问题的包在运行时可用就足够了。例如。它可能是您插件的暂时依赖。
  • 现在我正在执行一个单独的 Java 程序,所以不是插件的一部分。现在 Platform.getBundle("org.eclipse.platform") 返回 null 给我。我输入的任何“org.*”包都一样。
  • 这种方法只适用于同一个虚拟机。我不清楚版本查询在不同的进程中运行。也许你想澄清你的问题。
猜你喜欢
  • 2011-02-05
  • 1970-01-01
  • 2018-05-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-28
  • 1970-01-01
  • 2011-07-31
相关资源
最近更新 更多