我的插件依赖项应该放在哪里?

时间:2016-11-08 14:53:50

标签: java eclipse eclipse-plugin

所以这就是我的奋斗......我正在研究我的第一个Eclipse插件..在我的电脑上,我有2个eclipse版本,一个是我开发插件的,另一个是我要安装插件的。

现在我的插件工作正常,因为我可以通过使用插件开发的eclipse将其作为Eclipse应用程序运行来轻松测试它。这就是我的插件的外观:

enter image description here

正如你所看到的,我有很多所谓的"插件依赖"。

我还尝试了各种方法来导出插件,最新的(以及其他一些答案最佳方式)方法正在使用本教程: http://www.vogella.com/tutorials/EclipsePlugin/article.html#install-feature-via-the-eclipse-update-manager

要点:

  1. 练习:为插件创建一个功能
  2. 练习:创建插件的更新站点
  3. 但是,在第二个Eclipse中成功安装它(它在"安装细节"中显示为插件)后,功能不是预期的(我在测试插件时得到的功能)在Eclipse中用来开发它。)

    我有一个预感,问题出在第一张pic的依赖列表中。因为导出的内容大约是~14 KB,而依赖列表中的一些jar有超过150 KB。 我在安装Eclipse文件夹中搜索了一些这些罐子,但无法找到它们。

    我做错了什么?..您对在插件导出中包含这些依赖项有什么建议..

    由于 丹

    更新1 导出我的插件后,它看起来类似于第二个答案的文件夹结构: How to install plugin for Eclipse from .zip 但我认为存在一个问题,因为在"功能"和"插件"文件夹,我只有我的插件的jar,没有任何依赖(在另一个问题的答案,这些文件夹中有很多微软的jar)

    解 问题是我没有在我导出的Feature中设置依赖项。这可以通过在编辑Dependecies要素文件时进入feature.xml选项卡,然后添加插件所需的依赖项(在ecliplse项目中的Plugin Dependencies下列出)来完成< / p>

2 个答案:

答案 0 :(得分:1)

那些似乎都是标准的Eclipse插件,它们不需要成为导出的一部分。

插件安装将找到并使用已安装的插件。

如果缺少依赖项,您将从安装中收到错误。

如果您认为目标Eclipse不具备某些插件,则需要创建一个功能并列出所需的插件,或者更好的是所需的Eclipse功能。使用功能导出而不是插件导出来导出它。安装时,安装程​​序将从正确的安装站点中找到所需的插件/功能。

从不做的是在导出中包含标准插件,因为这会导致版本不匹配。

例如,这是feature.xml提取:

var active, fnArray = [];

function runOnce(fn, ms) {
  if (typeof(fn) !== "function")
    return;
  ms = ms || 5000;
  return (function() {
    if (active && fnArray.indexOf(fn.name) >= 0) {
      console.log('no hurry please');
    } else {
      fnArray.push(fn.name);
      active = setTimeout(function() {
        fnArray = fnArray.filter(function(elm) {
          elm !== fn.name
        });
        fn();
      }, ms);
    }
  })();
};

function x() {
  document.body.innerHTML += 'timeout from x </br>';
}

function y() {
  document.body.innerHTML += 'timeout from y </br>';
}
runOnce(x);
runOnce(x);
runOnce(x);
runOnce(y);
runOnce(x);
runOnce(y);

表示该功能需要Eclipse <feature id="greg.music.feature" label="Feature" version="1.0.0.qualifier" provider-name="Greg"> <requires> <import feature="org.eclipse.e4.rcp" version="1.4.1.v20160212-1350" match="greaterOrEqual"/> </requires> <plugin id="greg.music.e4.rcp" download-size="0" install-size="0" version="0.0.0" unpack="false"/> 功能。该功能包括org.eclipse.e4.rcp插件。

答案 1 :(得分:1)

您的屏幕截图看起来根本不像“插件”。它看起来更像是Eclipse 3.x RCP应用程序。你有像Application和ApplicationActionBarAdvisor这样的类。这就是为什么当您将插件安装到Eclipse并启动它时,您会看到行为上的差异。当您开发代码并启动“插件”时,您可能实际上将其作为独立的RCP应用程序启动。

尽管如此,您的“应用程序”仍然应该运行(在一定程度上取决于它的编码方式),因为我看到您已经定义了视图和透视图。您是否尝试在安装插件的Eclipse中打开视图或透视图?