Устранение зависимостей Девы из связок с банками - PullRequest
0 голосов
/ 04 июля 2011

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

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

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

  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, чтобы экспортировать все классы:

    Manifest-Version: 1.0
    Bundle-Version: 1.0.0
    Bundle-Name: joda-time
    Bundle-ManifestVersion: 2
    Bundle-SymbolicName: org.joda.time
    Bundle-ClassPath: lib/joda-time-1.6.1.jar,
     .
    Export-Package: 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 (Indigo Java EE) "MyDepTest"
  2. Редактирование src / META-INF / MANIFEST.MF для импорта org.joda.time:

    Manifest-Version: 1.0
    Bundle-Version: 1.0.0
    Bundle-Name: MyDepTest
    Bundle-ManifestVersion: 2
    Bundle-SymbolicName: com.foo.deptest
    Import-Package: org.joda.time
    Import-Bundle: org.joda.time;version="[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 Ответ

1 голос
/ 04 июля 2011

Оказывается, недостаточно добавить jar в путь к классам, нам также нужно убедиться, что он является частью пути сборки.Это делается в диалоговом окне конфигурации сборки:

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