В зависимости от com.sun.javadoc из tools.jar (Sun JDK) в Eclipse - PullRequest
6 голосов
/ 03 октября 2009

Для одного из наших плагинов требуется установленный JDK, а не просто JRE. Нам нужны com.sun.javadoc и друзья из tools.jar. Я не думаю, что лицензия Sun позволит перераспределять tools.jar (что не обязательно, если у вас уже есть JDK).

Также кажется, что в Eclipse нет способа указать JDK как зависимость. Все ответы в новостных группах Eclipse предполагают, что конечным пользователям сначала необходимо правильно настроить Eclipse.

Знаете ли вы какой-нибудь обходной путь, который сделает эту зависимость очевидной для пользователей нашего плагина, , просто используя встроенные механизмы Eclipse для зависимостей ? Кажется, этот пакет даже не действителен для Import-Package в манифесте, в отличие, например, от com.sun.jdi.

(В качестве обходного пути, в настоящее время мы можем только предупредить об активации плагина, что эта библиотека отсутствует.)

1 Ответ

2 голосов
/ 06 октября 2009

Поскольку eclipse предлагает среду OSGi, вы можете обратиться к статье " Отображение пути загрузки в OSGi " и попробовать использовать:

  • декларация системных пакетов
  • объявление комплектов (фрагментов)
  • или загрузочное делегирование

Указав нужные вам пакеты JDK, платформа OSGI попытается загрузить их (и потерпит неудачу, если их здесь нет).
Указав один специфический для JDK5 или JDK6, вы даже можете обеспечить правильную версию JDK.

Спецификация OSGi позволяет платформе (через ее системный комплект) экспортировать любые соответствующие пакеты из загрузчика родительского класса в виде системных пакетов, используя свойство org.osgi.framework.system.packages.
Поскольку перепаковка хостинга JDK в качестве пакета не является приемлемой опцией, можно использовать этот параметр, чтобы системный пакет (или пакет с идентификатором 0) экспортировал эти пакеты самостоятельно.
Большинство реализаций OSGi уже используют это свойство для экспорта всех общедоступных пакетов JDK (в зависимости от обнаруженной версии JDK). Ниже приведен фрагмент из файла конфигурации Equinox для Java 1.6:

org.osgi.framework.system.packages = \
  javax.accessibility,\
  javax.activity,\
  javax.crypto,\
  javax.crypto.interfaces,\
  …
  org.xml.sax.helpers

Используя это свойство, можно добавить дополнительные пакеты, которые будут загружены и предоставлены платформой и которые могут быть связаны с другими пакетами.

org.osgi.framework.system.packages = \
  javax.accessibility,\
  javax.activity,\
  …
  org.xml.sax.helpers, \
  special.parent.package

Примечание: более простое решение указания Bundle-RequiredExecutionEnvironment предназначено только для JRE, а не для JDK ...


Конфигурации такого типа должны быть частью config.ini инфраструктуры Equinox (см. этот пример для Jetty и config.ini ).
В вашем случае это будет объявлено в config.ini вашего фрагмента.

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