Устранение зависимостей Девы от связок с банками

Я пытаюсь обернуть несколько банок в пакеты, от которых я хочу, чтобы другие пакеты могли зависеть. В Spring dm Server это было так просто, как добавить файл jar в новый проект пакета, экспортировать все классы и убедиться, что файл jar находится на пути сборки и класса.

Вот простой, канонический пример того, что я пытаюсь сделать (и где я терплю неудачу):

Возьмите, к примеру, Joda Time, я бы хотел, чтобы это было в комплекте, чтобы я мог поделиться им как зависимостью. Сначала я создаю пакет для хранения баночки:

  1. Создать новый пакетный проект Eclipse (Indigo Java EE)
  2. Создайте папку "lib" в корне проекта
  3. Добавьте joda-time-1.6.1.jar в папку "lib"
  4. Добавьте lib/joda-time-1.6.1.jar в путь сборки
  5. Обновите файл 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

Теперь мы хотим использовать это в каком-то новом пакете, который мы создали:

  1. Создайте новый проект пакета в Eclipse (Индиго Java EE) "MyDepTest"
  2. Отредактируйте файл 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]"
  3. Добавьте пакет org.joda.time к ссылкам проекта, чтобы Eclipse мог разрешить зависимости

  4. Напишите класс:

    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 в путь к классам, нам также нужно убедиться, что это часть пути сборки. Это делается в диалоге конфигурации сборки:

  1. Щелкните правой кнопкой мыши по проекту, экспортирующему зависимости
  2. Выберите "Свойства"
  3. Выберите "Путь сборки Java"
  4. Перейдите на вкладку "Заказ и экспорт"
  5. Убедитесь, что флажок рядом с флягой отмечен (это гарантирует, что сам фляга окажется на пути сборки)
Другие вопросы по тегам