Когда я пытаюсь экспортировать подключаемый модуль с помощью Eclipse, я получаю сообщение об ошибке «При создании пути к классам был обнаружен цикл».
Далее следует список плагинов, который, по-видимому, показывает цикл в такой форме:
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 и проверяя вкладку Dependencies, а также просматривая свойство Required-bundle: в манифесте, я подтверждаю все эти зависимости, вплоть до самой последней.
То есть в MANIFEST.MF для a.b.c.plugin-z я не вижу зависимости от plugin-w.
Я правильно читаю ошибку? Если да, как я могу отладить причину ошибки?
2 ответа
Этот вопрос сложно обобщить, и я не провел необходимого утомительного полного анализа, поэтому я отвечаю на свой вопрос и надеюсь, что он поможет другим, ищущим ту же ошибку.
При экспорте подключаемого модуля я получаю сообщение об ошибке «Цикл был обнаружен при создании пути к классам», но я не вижу этот цикл, исследуя зависимости каждого подключаемого модуля.
Проблема заключается в том, что здесь задействован фрагмент. Один из подключаемых модулей в цепочке, скажем, plugin.x, выше, является хостом фрагмента для другого подключаемого модуля, который не указан в цепочке зависимостей, и что этот второй подключаемый модуль имеет зависимость, которая вводит цикл.
Назовем плагин, которого нет в цепочке зависимостей, «plugin.x1».
В файле MANIFEST.MF для plugin.x1 я вижу атрибут «Fragment-Host: a.b.c.plugin-x». Этот атрибут делает plugin-x зависимым от plugin-x1.
Но другой атрибут в файле MANIFEST.MF для plugin.x1 гласит: «Import-Package: a.b.c.plugin-w».
Итак, зависимость такова: w зависит от x; x - хост фрагмента для x1; и x1 зависит от w. Таким образом цикл.
Чистое решение: перепроектировать мой код, чтобы избежать циклических зависимостей, избегая конфигурации хоста фрагмента.
Быстрое и грязное решение, которое мне подходит: закрывайте проект plugin.x1 всякий раз, когда я хочу экспортировать свой plugin.u.
Еще одно быстрое и грязное решение - установить флажок «Разрешить двоичные циклы на целевой платформе» в нижней части окна экспорта.
Похожие вопросы
Новые вопросы
eclipse
Eclipse - это IDE с открытым исходным кодом и платформа для создания приложений. Существует множество плагинов для различных языков программирования и других инструментов, ориентированных на разработку (таких как моделирование, просмотр баз данных и т. Д.). Этот тег следует использовать только для вопросов, конкретно касающихся Eclipse IDE или платформы, а не для общих (Java и т. Д.) Тем программирования.