Добавление внешнего JAR-файла в конфигурацию отладки приложения Eclipse - PullRequest
4 голосов
/ 24 октября 2011

Проблема заключается в следующем:

  1. У меня установлен и работает подключаемый модуль Eclipse стороннего производителя

  2. Вышеупомянутый плагин Eclipse предоставляет своего рода «точку расширения» - источник для класса, который я могу расширять / переписывать и заменять в каталоге плагина lib (я не говорю, что это отличная идея, но необходимость заставляет нас делать то, чем мы не гордимся - у внутреннего развития есть свои причуды)

  3. Идея состоит в том, чтобы заключить любое такое изменение во внешний JAR (созданный нами), чтобы любое изменение в коде не требовало от нас перезапуска Eclipse для «обновления» класса «точки расширения» во время разработки. .

  4. В конце концов, плагин / комплект будет создан и помещен как зависимость от исходного плагина - так что установка и использование этого плагина на самом деле, вы знаете, будут работать.

Вопрос в том, могу ли я каким-либо образом добавить внешний файл JAR в конфигурацию отладки / запуска приложения Eclipse?

Обычно добавление JAR на вкладку classpath работает для обычной отладки / запуска Java-приложений. Однако в Eclipse Application эта вкладка отсутствует.

Пока что усилия (неудачные, возможно, из-за какой-то глупой синтаксической ошибки или чего-то еще) включали:

  1. Добавление JAR в качестве зависимости к Bundle-ClassPath: плагина как C:\test.jar
  2. Добавление JAR в системную переменную CLASSPATH

Ничего из этого не имело никакого значения - код в "точке расширения", которая ссылается на класс в файле JAR, не работает - исключение, которое сводится к:

Caused by: java.lang.ClassNotFoundException: test.Test
at org.eclipse.osgi.internal.loader.BundleLoader.
     findClassInternal(BundleLoader.java:506)

Любой указатель / помощь / критика будет принята с благодарностью.

Обновление

Очевидно, что помещение JAR в каталог lib плагина и обновление файла MANIFEST не работает (не то, чтобы это помогло мне - поскольку такое решение потребовало бы «обновления», которого я пытаюсь избежать во-первых), поэтому я, должно быть, делаю что-то в корне неправильно.

Имеет ли это какой-то смысл или я что-то упустил в одной из этих попыток?

Ответы [ 2 ]

2 голосов
/ 06 сентября 2012

Первое предположение, основанное на некоторых предположениях:

Вы разрабатываете расширение для сторонней точки расширения 'foo'. Ваше приложение является приложением Eclipse, которое вы запускаете через конфигурацию запуска. Вам нужно создать новый плагин 'foo-extension', который реализует точку расширения. Вы должны добавить новый плагин как зависимость от плагина для вашего приложения. Таким образом, он будет доступен в пути к классам проекта, а также на вкладке «Подключаемые модули» вашей конфигурации запуска. Выберите новый проект, и при запуске приложения расширение будет доступно с последними изменениями.

2 голосов
/ 06 сентября 2012

Я включил внешний файл JAR в свое приложение Eclipse ..... не в конфигурации отладки / запуска, а в само приложение.

То, что мы сделали, это заключили плагин в свой собственный проект Java. Мы используем maven для нашей сборки, поэтому pom.xml перечисляет зависимость в виде файла .jar (который мы помещаем в каталог lib в проекте). Файл manifest.mf экспортирует необходимые классы. Плагины моего приложения зависят от этого проекта. Когда я отлаживаю / запускаю приложение в рабочей среде, я просто проверяю, включен ли этот библиотечный проект.

Я не уверен, что это отвечает на ваш вопрос полностью или нет .... но я надеюсь, что это поможет.

...