На Apache Felix (v 4.2.1) Gogo shell не печатается System.out.println из бандлов

Отказ от ответственности: я полный новичок в OSGi в целом и в Felix в частности. Так что извините за любую глупую ошибку, которую я делаю на этот раз, но очень признательна, если вы можете указать на нее.

Я загрузил Apache Felix v4.2.1 и запустил его, как описано в руководстве по адресу http://felix.apache.org/documentation/subprojects/apache-felix-framework/apache-felix-framework-usage-document.html

Также следовали данным учебным пособиям, чтобы разработать образец пакета прослушивателя службы, пакета словаря и клиента словаря (ссылка: http://felix.apache.org/documentation/tutorials-examples-and-presentations/apache-felix-osgi-tutorial/apache-felix-tutorial-example-1.html)

Мне удалось успешно установить и запустить их в Felix с помощью команды felix:start. Ниже приведен вывод команды felix:lb:

START LEVEL 1
   ID|State      |Level|Name
    0|Active     |    0|System Bundle (4.2.1)
    1|Active     |    1|Apache Felix Bundle Repository (1.6.6)
    2|Active     |    1|Apache Felix Gogo Command (0.12.0)
    3|Active     |    1|Apache Felix Gogo Runtime (0.10.0)
    4|Active     |    1|Apache Felix Gogo Shell (0.10.0)
    5|Active     |    1|file:/home/dev/experiments/osgi/workspace/FirstProj/dist/firstproj.jar (0.0.0)
    6|Active     |    1|file:/home/dev/experiments/osgi/workspace/SecondProj/dist/dictionary.jar (0.0.0)
    7|Active     |    1|file:/home/dev/experiments/osgi/workspace/ThirdProj/dist/dictionary_client.jar (0.0.0)

Однако ни один из моих пакетов ничего не выводит на консоль, а 7-й пакет (dicionary_client) также должен запрашивать ввод (используя System.in), что также не работает.

Должно быть, это небольшая ошибка конфигурации/исполнения, но очень признателен, если вы, ребята, сможете указать мне правильное направление.

Спасибо.


person jatanp    schedule 15.02.2014    source источник


Ответы (1)


Я понял проблему. Пакеты не устанавливались правильно, потому что в соответствующих файлах jar не было записи каталога META-INF.

У них был META-INF/MANIFEST.MF, но похоже, что Феликсу требуется каталог META-INF в структуре каталогов jar (он может использовать метод getResource для управления каталогом META-INF).

JAR-файл экспорта Eclipse не создает такую ​​запись (даже если выбран параметр «Добавить каталоги»). Поэтому я вручную построил банки, и они работают.

person jatanp    schedule 16.02.2014