Вопрос по eclipse – Как узнать, какая функция содержит необходимый плагин на сайте загрузки Eclipse

26

При разработке приложения RCP на целевой платформе я (и другие) часто попадаются зависимости, которые необходимо добавить с сайта программного обеспечения Eclipse Releases. Всякий раз, когда плагин включен в мою IDE, но не в моей целевой платформе, и я пытаюсь запустить приложение из определения продукта, я получаю экран предупреждения, информирующий меня о том, что такой-то и такой-то пакет не может быть разрешен.

& quot; Нет проблем, просто добавьте функцию, содержащую плагин с сайта загрузки Eclipse, на целевую платформу и добавьте необходимый плагин в проект плагина / Project Feature, что бы вы сказали .... & quot;

Но, AFAIK, нет простого способа (например, веб-сайт) выяснить, какая функция включает в себя какой плагин. Например, чтобы добавитьorg.eclipse.ui.views.properties.tabbedМне нужно знать, что этот плагин включен вEclipse Platform SDK особенность (среди прочих).

До сих пор я не нашел простой способ выяснить, какая функция содержит какой плагин. Обычно я начинаю с поиска имени плагина и пытаюсь найти учебное пособие или подобное в результатах поиска, которое может подсказать мне, какую функцию включить, чтобы попасть в плагин. Это может быть утомительно, конечно.

Итак, мой вопрос: есть ли лучший, возможно, даже официальный (или официальный) способ быстро и просто найти эту информацию?

Ваш Ответ

1   ответ
22

вы можете использовать язык запросов p2, чтобы найти все функции, которые зависят от пакета. Мой пример в Eclipse Juno (4.2):

переключиться на консоль OSGi в представлении консолиss p2.console #, чтобы найти номер пакета консолиfelix: start -t ConsoleBundleNumber

Теперь вы можете выдавать p2-запросы. Чтобы узнать, какие функции в вашей текущей установке содержат Org.eclipse.jface, вы можете использовать

osgi> provlpquery this "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.jface' && iu ~= rc)))" true
org.eclipse.e4.rcp.feature.group 1.1.0.v20120521-2329-8yFTIGF3GGduEYqkQB9M3DKn
org.eclipse.e4.tools.css.spy.feature.feature.group 0.12.0.v20111206-1509-17B-7w3123161302752

Чтобы узнать, какая функция включает в себя Org.eclipse.ui.views.properties.tabbed вы можете использовать

osgi> provlquery http://download.eclipse.org/releases/juno "select(parent | parent.properties['org.eclipse.equinox.p2.type.group'] == true && parent.requirements.exists(rc | everything.exists(iu | iu.id == 'org.eclipse.ui.views.properties.tabbed' && iu ~= rc)))" true
org.eclipse.amp.amf.feature.group 0.9.0.v20120528-0244
org.eclipse.bpel.feature.feature.group 1.0.1.v20120606-0845-CI
org.eclipse.jwt.feature.feature.group 1.2.0.v201205310546-7O7i-FK_Qj4QkVn3kW9q
org.eclipse.platform.feature.group 4.2.0.v20120528-1648-9JF7BHV8FyMteji0MoOeOuU6sAnxIeYtKNM1dK
org.eclipse.ptp.etfw.tau.feature.group 6.0.0.201206052145
org.eclipse.tcf.te.feature.feature.group 1.0.0.201206051725
org.eclipse.tcf.te.tcf.feature.feature.group 1.0.0.201206051725

В этом случае, Org.eclipse.platform.feature.group самый правильный.

Первый пример - запрос профилей в текущем затмении, поэтому он используетprovlpquery это. Во втором примере указывается внешний репозиторий p2, поэтому он используетprovlquery repo.

Видетьhttp: //wiki.eclipse.org/Equinox_p2_Console_Users_Guid для получения дополнительной информации о консоли p2. Там происходит много черной магии: -)

Отличный ответ, спасибо! parasietje

Похожие вопросы