2

現在、アプリケーションをopenlaszloから3.3から5.0に移行しています。クラスの1つでこのエラーが発生しました。

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) {

その特定のクラスでは、データパスタグを削除すると、このエラーは発生しません。

このエラーが発生している理由を誰かに教えてもらえますか?

4

1 に答える 1

2

次のコードを使用して、エラー メッセージを再現できました。

<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 アプリケーションを SWF10+ ランタイムをサポートするバージョンの OpenLaszlo にアップグレードする場合に、コンパイラが理解しにくいエラー メッセージや例外を吐き出すバグやケースが比較的多いようです。コンパイラにバグがあるという印象を簡単に与えてしまうので、これは非常に残念なことです。

<c1> および <c2> のインスタンス内で datapath タグを使用すると、コンパイラは次のようなエラー メッセージを報告しません。

<canvas>

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

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

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

</canvas>
于 2012-08-18T10:03:40.873 に答える