Несмотря на ошибку циклической зависимости в экспорте плагина Eclipse, я не могу найти цикл в зависимостях: как это отладить? - PullRequest
0 голосов
/ 01 апреля 2011

, когда я пытаюсь экспортировать плагин с помощью Eclipse, я получаю сообщение об ошибке «Обнаружен цикл при создании classpath».

Далее следует список плагинов, которые, по-видимому, показывают цикл, в следующем виде:

a.b.c.plugin-u_version,
**a.b.c.plugin-w_version**,
a.b.c.plugin-x_version,
a.b.c.plugin-y_version,
a.b.c.plugin-z_version,
**a.b.c.plugin-w_version**.

Обратите внимание, что согласно этому списку, похоже, что plugin-w зависит от plugin-z, а plugin-z зависит от plugin-w.

Когда я проверяю зависимости этих плагинов, открывая MANIFEST.MF и проверяя вкладку Зависимости, а также просматривая свойство Required-bundle: в манифесте, я подтверждаю все эти зависимости вплоть до самого последний.

То есть в файле MANIFEST.MF для a.b.c.plugin-z я не вижу никакой зависимости от plugin-w.

Я правильно понял ошибку? Если так, как я могу отладить, откуда исходит ошибка?

Ответы [ 2 ]

1 голос
/ 10 февраля 2014

Другое быстрое и грязное решение - установить флажок «Разрешить двоичные циклы на целевой платформе» в нижней части окна экспорта.

1 голос
/ 06 апреля 2011

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

При экспорте плагина я получаю сообщение об ошибке: «При генерации пути к классу обнаружен цикл», но я не вижу этот цикл, изучая зависимости каждого плагина.

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

Давайте назовем плагин, который не указан в цепочке зависимостей, «plugin.x1».

В файле MANIFEST.MF для plugin.x1 я вижу атрибут «Фрагмент-хост: a.b.c.plugin-x». Этот атрибут делает плагин-x зависимым от плагина-x1.

Но другой атрибут в файле MANIFEST.MF для plugin.x1 гласит: «Импорт-пакет: a.b.c.plugin-w».

Итак, зависимость: w зависит от x; х является фрагментом хоста для х1; и x1 зависит от w. Таким образом, цикл.

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

Быстрое и грязное решение, которое работает для меня: закройте проект plugin.x1 всякий раз, когда я хочу экспортировать свой plugin.u.

...