Как связаны jsf-api и jsf-impl?

В течение некоторого времени я изо всех сил пытаюсь запустить тестовый пример arquillian. В этом тесте участвуют классы, основанные на классах JSF, и он столкнулся с ошибкой ClassFormatError: Absent Code, поскольку не удалось найти реализацию для javax.faces.model.DataModel.

Мое предположение состояло в том, что мне нужно предоставить для моего теста реализацию JSF, но реализации, которые я нашел (например, та, которая связана с JBoss), не имеют пакета javax.faces, только com.sun, и я не смог найти никаких следов класса DataModel.

Где я неправильно понимаю, как это работает здесь? Почему impl на самом деле не реализует api?


person kostja    schedule 24.10.2012    source источник
comment
Эта ошибка не может быть вызвана наличием только jsf-api.jar. Разве вы на самом деле не используете javaee.jar? (который, в свою очередь, действительно не содержит тел методов).   -  person BalusC    schedule 24.10.2012
comment
@BalusC Я почти наверняка не использую javaee.jar. Я начал с примера kitchensink из кратких руководств по JBoss в качестве шаблона проекта. Все зависимости JEE, которые я использую, определяются спецификацией jboss-javaee-6.0-with-tools. Я начал изучать jsf-impls только потому, что прочитал о заглушках javaee.jar. В связанном вопросе есть дополнительная информация, и я хотел бы прочитать ваш вклад :)   -  person kostja    schedule 24.10.2012


Ответы (1)


API:

  • общедоступные типы, для которых потребители могут писать код

Реализация:

  • частные типы, на которые потребители не должны полагаться
  • детали реализации, включая разметку (например, HTML) и контейнер (например, сервлет)

Это разделение не такое четкое, как должно быть, но в основном это и есть цель. Разделение на эти два jar-файла — это то, как разработчики решили организовать код, но вам понадобятся оба для использования библиотеки в большинстве контекстов.

person McDowell    schedule 24.10.2012
comment
Кажется, я неправильно понял цель и масштаб разделения. Спасибо за разъяснения - person kostja; 24.10.2012