Обновление до Flex SDK 4.5.1 с версии 4.1.0 вызывает ошибки компиляции пространства имен для определенных компонентов mx

#apache-flex #maven #flash-builder #flexmojos

#apache-flex #maven #flash-builder #flexmojos

Вопрос:

У меня есть проект Flash builder, который я переношу с SDK 4.1.0 на 4.5.1. Это было относительно простое изменение (мы используем maven для наших сборок и смогли получить успешную сборку после обновления до зависимостей 4.5.1).

Как уже было сказано, проект отлично работает с maven и flexmojos. Проблема возникает при открытии проекта во Flash builder. Проект maven импортируется, а затем устанавливается как проект flex с помощью команды maven flexmojos:flexbuilder build .

Проблема заключается в том, что определенные компоненты mx, указанные в пространстве имен s:, больше не принимаются IDE и приводят к ошибке. Например, для компиляции следующего:

 <s:states>
    <s:State name="normal" />
    <s:State name="disabled" />
</s:states>
  

s:State необходимо изменить на mx пространство имен:

 <s:states>
    <mx:State name="normal" />
    <mx:State name="disabled" />
</s:states>
  

Это всего лишь один пример, который происходит только для определенных компонентов с пространством имен spark. Почему это? Почему это нормально компилируется с Flex SDK 4.1.0, но не с Flex SDK 4.5.1, и в чем причина необходимого изменения пространства имен?

Ответ №1:

Я обнаружил те же проблемы с использованием FlexMojos, потому что, похоже, Adobe сделала небольшой трюк, указав пространство имен spark для компонентов mx (например, State и Spacer).

Кроме того, если вы используете flexmojos:flexbuilder , это означает, что вы также используете старую версию FlexMojos (3.8?). Сейчас есть версия 4.0 (RC2), однако цель flexbuilder на данный момент удалена.

В любом случае, возвращаясь к вашему вопросу, я вижу это по-другому в моем проекте (s: Spacer работает во Flash Builder, а не в FlexMojos). Лично я считаю, что эти пространства имен не должны пересекаться, и как разработчику проще просто указать точное пространство имен и не беспокоиться об обмане пространства имен.

Комментарии:

1. Хотя приятно слышать, что я не единственный, кто видит проблему, было бы неплохо получить подтверждение точных изменений, внесенных Adobe в их компоненты, которые вызывают это. Являются ли изменения пространства имен очевидными, потому что Adobe ранее «переводила» пространства имен xmlns, или произошло фактическое изменение пространства имен компонентов?