Как нацелиться на Юнону и Кеплер

Я написал плагин Eclipse, используя Kepler. Теперь, когда код завершен, я попытался установить его с помощью Juno для проверки обратной совместимости и получил эту ошибку при установке:

Only one of the following can be installed at once: 
Expression Language 3.4.300.v20110228 (org.eclipse.core.expressions 
3.4.300.v20110228) 
Expression Language 3.4.401.v20120912-155018 
(org.eclipse.core.expressions 3.4.401.v20120912-155018) 
Expression Language 3.4.401.v20120627-124442 
(org.eclipse.core.expressions 3.4.401.v20120627-124442) 
Expression Language 3.4.400.v20120523-2004 
(org.eclipse.core.expressions 3.4.400.v20120523-2004) 
Expression Language 3.4.501.v20131118-1915 
(org.eclipse.core.expressions 3.4.501.v20131118-1915) 

Как видно выше, Kepler хочет Expression 3.4.500, а Juno использует 3.4.401. Я попытался удалить требование минимальной версии из подключаемого модуля org.eclipse.core.expressions (ранее было установлено значение 3.4.500), но безрезультатно.

Как правильно написать плагин, поддерживающий Juno и Kepler? По крайней мере, что требуется для решения этой проблемы зависимости?

В соответствии с просьбой, вот манифест:

Manifest-Version: 1.0
Bundle-ManifestVersion: 2
Bundle-Name: My Plugin
Bundle-SymbolicName: com.mycompany.eclipse;singleton:=true
Bundle-Version: 0.2.2
Bundle-Activator: com.mycompany.eclipse.Activator
Bundle-Vendor: MyCompany Inc
Require-Bundle: org.eclipse.ui,
 org.eclipse.core.runtime,
 org.eclipse.core.resources;bundle-version="3.8.1",
 org.eclipse.jface.text;bundle-version="3.8.2",
 org.eclipse.ui.ide;bundle-version="3.8.2",
 org.eclipse.ui.editors;bundle-version="3.8.0",
 org.eclipse.jdt.core;bundle-version="3.8.3",
 com.mycompany.eclipse.dependencies;bundle-version="0.1.3",
 org.eclipse.ui.forms;bundle-version="3.6.0",
 org.eclipse.core.expressions;bundle-version="3.4.500"
Bundle-RequiredExecutionEnvironment: JavaSE-1.7,
 JavaSE-1.6
Bundle-ActivationPolicy: lazy
sherpaManifest-Version: 1.0
Bundle-ClassPath: .,
 resources/,
 icons/,
 static/

Согласно комментарию по этому вопросу плагины никогда не бывают обратно совместимыми. У кого-нибудь есть опыт в этом?


person Jason Nichols    schedule 02.04.2014    source источник
comment
Покажите нам MANIFEST.MF для вашего плагина.   -  person greg-449    schedule 03.04.2014
comment
@greg-449, добавлено по вашей просьбе.   -  person Jason Nichols    schedule 03.04.2014


Ответы (1)


Значение bundle-version для подключаемого модуля в записи Require-Bundle в подключаемом модуле MANIFEST.MF определяет требуемую версию зависимости.

У вас есть:

org.eclipse.core.expressions;bundle-version="3.4.500"

что говорит о том, что для вашего плагина требуется как минимум версия 3.4.500 плагина выражений. Измените версию на 3.4.401 для работы с Juno.

person greg-449    schedule 02.04.2014
comment
Если мы удалим bundle-version="3.4.500". Платформа относится к последней версии (если найдено несколько версий) или любой доступной версии. Это правильно? - person Chandrayya G K; 03.04.2014
comment
@ChandrayyaGK Да, он будет использовать все, что доступно. - person greg-449; 03.04.2014
comment
@ greg-449, я попробовал это и получил тот же результат, все еще требуется 3.4.500. - person Jason Nichols; 03.04.2014
comment
Вы устанавливаете только свой плагин или вместе с ним поставляются другие плагины (например, плагин выражений)? - person greg-449; 03.04.2014
comment
Это всего лишь мой плагин, но я заметил, что jar-файл expressions 3.4.500 включается в сайт, когда я его создаю. - person Jason Nichols; 03.04.2014