Как мне разрешить зависимость в плагине Eclipse, который я не написал? - PullRequest
2 голосов
/ 10 сентября 2009

Я пытаюсь использовать относительно новый плагин Eclipse (http://uqbar -tomcat-xt.sourceforge.net / download.html ). У него нет сайта обновления, поэтому я не могу установить его через пользовательский интерфейс в Eclipse, который обычно разрешает зависимости. Все, что доступно для скачивания, - это один файл .jar, а в инструкциях на сайте сказано, что нужно просто добавить его в eclipse / plugins. Когда я делаю это, это похоже на работу, в том смысле, что я получаю новые опции в Window -> Show View, которые должен добавить плагин. Однако, когда я пытаюсь использовать любое из этих представлений, я получаю следующую ошибку:

org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter$TerminatingClassNotFoundException: An error occurred while automatically activating bundle org.uqbar.eclipse.tomcat.xt (304).
    at org.eclipse.core.runtime.internal.adaptor.EclipseLazyStarter.postFindLocalClass(EclipseLazyStarter.java:125)
    at org.eclipse.osgi.baseadaptor.loader.ClasspathManager.findLocalClass(ClasspathManager.java:449)
    at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.findLocalClass(DefaultClassLoader.java:211)
...snip...
Caused by: org.osgi.framework.BundleException: The activator org.uqbar.eclipse.tomcat.xt.UqbarSydeoXtActivator for bundle org.uqbar.eclipse.tomcat.xt is invalid
    at org.eclipse.osgi.framework.internal.core.AbstractBundle.loadBundleActivator(AbstractBundle.java:157)
...snip...
Caused by: java.lang.Error: Unresolved compilation problems: 
    The import com.thoughtworks cannot be resolved
    XStream cannot be resolved to a type
    XStream cannot be resolved to a type
    XStream cannot be resolved to a type

На странице зависимостей вышеупомянутого сайта перечислены несколько зависимостей, включая XStream. Я попытался загрузить эти файлы .jars отдельно и поместить их в каталог eclipse / plugins, но это не помогло устранить ошибку. Когда я смотрю на манифест в банке, я вижу:

Bundle-ClassPath: .,commons-logging-1.0.4.jar,xpp3_min-1.1.4c.jar,xstr
 eam-1.3.jar,xstream-benchmark-1.3.jar

Но очевидно, что jar-файлы xstream недоступны на пути к классам (где это?). Я не уверен, где я могу поместить их, чтобы они распознавались плагином.

Я пытался связаться с разработчиками и не получил ответа, поэтому я перехожу к SO. Что я могу сделать, или плагин упакован неправильно?

Обновление: видимо, ошибка в Активаторе, а не в самом плагине. Я попытался импортировать плагин как исходный проект, но каталог src / пуст. Плагин не появляется в списке доступных развертываемых плагинов, когда я пытаюсь его экспортировать. Так что это все еще не решено.

Ответы [ 2 ]

2 голосов
/ 10 сентября 2009

Вы можете определить фрагмент Eclipse с отсутствующей зависимостью от его пути к классу (обычно в каталоге lib фрагмента и указан на пути к классам в манифесте).

Фрагмент - это особый тип плагина, который прикреплен к целевому плагину. Фрагмент объединяется с целевым плагином во время выполнения, поэтому классы в плагине будут иметь доступ к банке.

См. в этом вопросе , где приведены некоторые указания по созданию фрагмента.

1 голос
/ 10 сентября 2009

Исправление Rich Seller будет работать, хотя настоящая проблема - это дерьмовый плагин, который указывает на кучу сторонних библиотек на Bundle-ClassPath, но фактически не включает их! Bundle-ClassPath - это путь к классу, внутренний для пакета, поэтому все библиотеки, на которые есть ссылки, должны быть внутри пакета.

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...