Есть идеи, когда эта ошибка появится в Open Laszlo?

В настоящее время я переношу приложение с open laszlo с 3.3 на 5.0. Я столкнулся с этой ошибкой в ​​одном из классов.

line unknown: Error: A conflict exists with inherited definition $lzc$class_xxx.$datapath in namespace public, in line: var $classrootdepth;var $datapath;function $lzc$class__mjb ($0:LzNode? = null, $1:Object? = null, $2:Array? = null, $3:Boolean = false) {

В этом конкретном классе у меня есть тег datapath, если я удалю его, я не получу эту ошибку.

Может ли кто-нибудь сказать мне, почему эта ошибка возникает?


person karthick    schedule 17.08.2012    source источник
comment
Как определение атрибута datapath выглядит в вашем классе? Похоже, вы объявляете другой тип атрибута. Можете ли вы опубликовать небольшой фрагмент кода для тестирования?   -  person raju-bitter    schedule 17.08.2012
comment
Сообщение об ошибке — это сообщение об ошибке компилятора Flex, которое запускается при повторном объявлении свойства в классе, которое уже было объявлено в суперклассе. stackoverflow.com/questions/2310961   -  person raju-bitter    schedule 18.08.2012


Ответы (1)


Мне удалось воспроизвести сообщение об ошибке, используя этот код:

<canvas debug="true">

  <class name="c1" extends="node">
    <datapath />
  </class>

  <class name="c2" extends="c1">
    <datapath />
  </class>

</canvas>

Заглянув в JIRA, я увидел, что она уже зарегистрирована как ошибка: LPP-9747 - SWF10: Явные объявления ‹datapath› в определениях классов приводят к ошибке компилятора

Кажется, существует относительно большое количество ошибок или случаев, когда компилятор выдает сообщения об ошибках или исключения, которые трудно понять, особенно при обновлении приложений 3.x или 4.0/4.1 до версий OpenLaszlo с поддержкой среды выполнения SWF10+. Это очень прискорбно, так как легко создается впечатление, что компилятор глючит.

Когда вы используете тег datapath в экземплярах ‹c1› и ‹c2›, компилятор не сообщает о каких-либо сообщениях об ошибках, например:

<canvas>

  <class name="c1" extends="node">
  </class>

  <class name="c2" extends="c1">
  </class>

  <c1>
    <datapath/>
    <c2>
      <datapath />
    </c2>
  </c1>

</canvas>
person raju-bitter    schedule 18.08.2012
comment
Извините, я не видел ваш пост раньше. Но мой код именно такой, только вот такой. Есть ли способ преодолеть это? - person karthick; 18.08.2012
comment
Я обратился за помощью к @ptwithy, он гораздо лучше знает компилятор. Если нам повезет, он ответит... - person raju-bitter; 18.08.2012
comment
Спасибо .. А пока я попытаюсь включить это и посмотреть, работает ли оно в моем приложении. - person karthick; 18.08.2012
comment
Я слышал, что проблема относительно сложна, поскольку теги datapath обрабатываются иначе, чем обычные теги в OpenLaszlo. Это означает, что в настоящее время нет лучшего решения, чем добавлять теги datapath к экземплярам, ​​а не к классам. - person raju-bitter; 24.08.2012