所以这就是我的奋斗......我正在研究我的第一个Eclipse插件..在我的电脑上,我有2个eclipse版本,一个是我开发插件的,另一个是我要安装插件的。
现在我的插件工作正常,因为我可以通过使用插件开发的eclipse将其作为Eclipse应用程序运行来轻松测试它。这就是我的插件的外观:
正如你所看到的,我有很多所谓的"插件依赖"。
我还尝试了各种方法来导出插件,最新的(以及其他一些答案最佳方式)方法正在使用本教程: http://www.vogella.com/tutorials/EclipsePlugin/article.html#install-feature-via-the-eclipse-update-manager
要点:
但是,在第二个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>
答案 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中打开视图或透视图?