Устранение зависимостей Девы от связок с банками
Я пытаюсь обернуть несколько банок в пакеты, от которых я хочу, чтобы другие пакеты могли зависеть. В Spring dm Server это было так просто, как добавить файл jar в новый проект пакета, экспортировать все классы и убедиться, что файл jar находится на пути сборки и класса.
Вот простой, канонический пример того, что я пытаюсь сделать (и где я терплю неудачу):
Возьмите, к примеру, Joda Time, я бы хотел, чтобы это было в комплекте, чтобы я мог поделиться им как зависимостью. Сначала я создаю пакет для хранения баночки:
- Создать новый пакетный проект Eclipse (Indigo Java EE)
- Создайте папку "lib" в корне проекта
- Добавьте joda-time-1.6.1.jar в папку "lib"
- Добавьте lib/joda-time-1.6.1.jar в путь сборки
Обновите файл src/META-INF/MANIFEST.MF, чтобы экспортировать все классы:
Манифест-Версия: 1.0 Bundle-версия: 1.0.0 Название пакета: время йода Пакет-Манифест Версия: 2 Bundle-SymbolicName: org.joda.time Bundle-ClassPath: lib/joda-time-1.6.1.jar,, Экспорт-пакет: org.joda.time, org.joda.time.base, org.joda.time.chrono, org.joda.time.convert, org.joda.time.field, org.joda.time.format, org.joda.time.tz
Теперь мы хотим использовать это в каком-то новом пакете, который мы создали:
- Создайте новый проект пакета в Eclipse (Индиго Java EE) "MyDepTest"
Отредактируйте файл src/META-INF/MANIFEST.MF для импорта org.joda.time:
Манифест-Версия: 1.0 Bundle-версия: 1.0.0 Имя пакета: MyDepTest Пакет-Манифест Версия: 2 Bundle-SymbolicName: com.foo.deptest Импорт-пакет: org.joda.time Import-Bundle: org.joda.time; версия ="[1.0.0,1.0.0]"
Добавьте пакет org.joda.time к ссылкам проекта, чтобы Eclipse мог разрешить зависимости
Напишите класс:
package com.foo.deptest; import org.joda.time.DateTime; public class SimpleDepTest { public SimpleDepTest (){ DateTime dt = new DateTime(); } }
Сейчас, org.joda.time.DateTime
должно разрешиться, но Eclipse указывает на следующую ошибку с красным подчеркиванием на org.joda
Импорт org.joda не может быть решен
Где я ошибся? Как обернуть банку как пакет, чтобы я мог использовать классы в других пакетах?
1 ответ
Оказывается, недостаточно добавить jar в путь к классам, нам также нужно убедиться, что это часть пути сборки. Это делается в диалоге конфигурации сборки:
- Щелкните правой кнопкой мыши по проекту, экспортирующему зависимости
- Выберите "Свойства"
- Выберите "Путь сборки Java"
- Перейдите на вкладку "Заказ и экспорт"
- Убедитесь, что флажок рядом с флягой отмечен (это гарантирует, что сам фляга окажется на пути сборки)