Относительный путь из комплекта OSGi - PullRequest
1 голос
/ 21 июня 2010

У меня есть комплект обновлений, который ищет в определенной папке «комплект» и проверяет наличие новых комплектов для установки и обновлений для установленных в настоящее время комплектов. Внутри родительского каталога платформа OSGi находится в каталоге "/ framework", комплект обновлений находится в каталоге "/ system", и необходимо проверить каталог, находящийся в том же родительском каталоге "/ bundles" Внутри пакета обновления создается объект File с относительным путем, но он не работает со строкой "./bundles", и я не знаю, к какому файлу jar путь должен относиться. Буду признателен за любую информацию или информацию об этой проблеме .. Спасибо, Deniz

Редактировать: Уже разобрался. Похоже, путь разрешен в соответствии со сценарием Ruby, который я использую для запуска Equinox. Таким образом, путь разрешения - это каталог, в котором я запускаю Equinox, передав ему флаг "-console" с помощью системы Ruby. Спасибо за ответы, Дениз

Ответы [ 3 ]

3 голосов
/ 21 июня 2010

Создание нового файла ("./ bundles") разрешает в текущем рабочем каталоге.

Вы можете установить свой пакет, получив поток ввода самостоятельно и вызвав BundleContext # installBundle (String, InputStream).

OSGi сама не делает никаких предположений о расположении файловой системы или о том, что пакеты находятся даже на диске.Но если вы используете Equinox в качестве своей платформы, вы можете определить свои относительные пути к "osgi.install.area". Служба определения местоположения может дать вам это.А затем используйте абсолютный путь для установки пакета.

Или вы можете получить системный пакет (BundleContext.getBundle (0)) и использовать FileLocator (из org.eclipse.equinox.common), чтобы найти его.на диске.

2 голосов
/ 21 июня 2010

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

new File("./bundles").getAbsolutePath();

Надеюсь, это поможет.

0 голосов
/ 21 июня 2010

Уже разобрался.Похоже, путь разрешен в соответствии со сценарием Ruby, который я использую для запуска Equinox.Таким образом, путь разрешения - это каталог, в котором я запускаю Equinox, передав ему флаг "-console" с помощью системы Ruby.Спасибо за ответы, Дениз

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