Пакет активаторов bndtools

Как создать простую связку с активатором в bndtools? Он продолжает говорить, что:

The JAR is empty: The instructions for the JAR named com.myproj did not cause any content to be included, this is likely wrong  bnd.bnd /com.myproj Unknown Bndtools Problem Marker
Unused Private-Package instructions, no such package(s) on the class path: [com.myproj] bnd.bnd /com.myproj Unknown Bndtools Problem Marker

Как я создаю этот проект в Eclipse:

  1. Создайте новый «Проект Bndtools OSGi»
  2. Щелкните правой кнопкой мыши, настроить - преобразовать в проект Maven
  3. Создайте Activator.java в пакете com.myproj.
  4. Добавить com.myproj в приватные пакеты
  5. Установите активатор на com.Activator

Вот мой файл bnd:

Bundle-Activator: com.myproj.Activator
Private-Package: com.myproj

Моя сгенерированная банка пуста. Какие-нибудь советы?

PS: Вот мой проект eclipse (экспортированный в виде zip-архива) на случай, если он прольет свет на ситуацию: https://dl.dropbox.com/u/9162958/scraper.zip


person Andriy Drozdyuk    schedule 07.12.2012    source источник
comment
Вы создаете банку с помощью maven или через eclipse?   -  person mbelow    schedule 07.12.2012
comment
Похоже, ваши классы (включая активатор) не включаются в ваш пакет при экспорте. откройте редактор манифеста, щелкните сборку, которая откроет файл build.properties, и вставьте этот контент.   -  person Duncan Krebs    schedule 07.12.2012
comment
например, это содержимое одного из моих пакетов build.properties. Ваше выглядит похоже? вывод.. = bin/ bin.includes = META-INF/,\ .,\plugin.xml,\schema/,\OSGI-INF/ источник.. = src/   -  person Duncan Krebs    schedule 07.12.2012
comment
Можете ли вы успешно собрать пакет тренировок bndtools? Вы используете плагин maven Tycho?   -  person mbelow    schedule 07.12.2012
comment
@DuncanKrebs Какой манифест вы имеете в виду? В моем проекте его нет. Кроме того, у меня тоже нет файла build.properties. @mbelow Я не использую Tycho. Я использую bndtools для его сборки - я имею в виду, что он автоматически создает его для меня и помещает в папку generated.   -  person Andriy Drozdyuk    schedule 07.12.2012
comment
Я загрузил свой проект, если это поможет объяснить мою проблему...   -  person Andriy Drozdyuk    schedule 07.12.2012
comment
Я думаю, что каждый из предыдущих ответов, кажется, упускает из виду то, что drozzy пытается построить с помощью bndtools, а не Eclipse. То есть у bndtools нет build.properties (слава богу!)   -  person Peter Kriens    schedule 08.12.2012


Ответы (2)


Я предполагаю, что проблема заключается в «Преобразовании в проект Maven». Это, вероятно, изменило путь к классам Eclipse для проекта с папки bin по умолчанию bnd на «target/classes». Можете ли вы подтвердить, что он работает без преобразования в maven?

bnd может работать и с другими местами для папки bin, необходимо установить свойство ${bin} (желательно в cnf/build.bnd). Есть несколько статей о том, как использовать bndtools с maven. Причина, по которой bnd здесь не следует настройкам Eclipse, заключается в том, что они недоступны без Eclipse, а цель bnd заключается в том, чтобы он собирался где угодно: поэтому файл bnd должен быть окончательным арбитром информации.

В любом случае, еще один совет ... активаторы - неправильный способ сборки OSGi-сборок, поскольку они являются злым синглтоном. Декларативные сервисы намного лучше, и мы должны были использовать аналогичный механизм, когда разрабатывали OSGi.

person Peter Kriens    schedule 08.12.2012

Моя установка:

  • Затмение Луна 4.4.0 (20140612-0600)
  • Bndtools 2.3.0.REL-20140510-023245

Вот как я заставил это работать:

  1. Я скачал экспортированный вами scraper.zip.
  2. Создано и пустое рабочее пространство в Eclipse.
  3. Импортировал ваш проект из ZIP-архива в пустую рабочую область.
  4. Проект по умолчанию cnf был создан автоматически.
  5. По умолчанию bnd настроен на использование каталога bin для скомпилированных файлов *.class, в то время как ваш проект Eclipse настроен на использование target/classes. Поэтому мне пришлось изменить эти настройки в cnf/build.bnd, добавив одну строчку:
########################
## BND BUILD SETTINGS ##
########################
bin: target/classes
  1. Теперь, после очистки и перестроения проекта, bnd создает generated/scraper.jar, который содержит ваш файл Activator.class.

Примечания:

  • Вы также можете адаптировать конфигурацию своего проекта для использования каталога bin вместо target/classes, но я предполагаю, что позже вы будете использовать Maven.
  • При использовании bndtools иногда помогает, когда вы начинаете с пустой рабочей области и импортируете свои проекты один за другим.
  • В bndtools 2.4 есть ошибка, которая вызывает некоторые проблемы, если в проекте несколько исходных каталогов. Поэтому пока пользуюсь версией 2.3
person Viliam Simko    schedule 13.11.2014