0

私が使用している: - Flex SDK 3.5.0 - Parsley 2.2.2。- フラッシュビルダー 4

src フォルダー (Flash Builder のソース パスの一部として構成されている) の下に、Parsley を介して構成する logging.xml があります。

            FlexLoggingXmlSupport.initialize();
        XmlContextBuilder.build("com/company/product/util/log/logging.xml");

Flash Builder でアプリケーションを実行すると、XmlContentBuilder が logging.xml を見つけているようです (実装は通常の URLLoader です)。

MXMLC (Ant またはコマンドラインのいずれか) を使用してアプリケーションをコンパイルし、swf を実行すると、次のエラーが発生します。

原因 (0): com/company/product/util/log/logging.xml の読み込みエラー: URLLoader のエラー - 原因: エラー #2032: ストリーム エラー。URL: file:///C|/workspace/folder01/product/target/com/company/product/util/log/logging.xml - 原因: エラー #2032: ストリーム エラー。URL: file:///C|/workspace/folder01/product/target/com/company/product/util/log/logging.xml

Ant の MXMLC タグは次のとおりです。

        <mxmlc file="${product.src.dir}/com/company/product/view/Main.mxml" output="${product.target.dir}/${product.release.filename}" keep-generated-actionscript="false">
        <load-config filename="${FLEX_HOME}/frameworks/flex-config.xml" />

        <!-- source paths -->
        <source-path path-element="${FLEX_HOME}/frameworks" />
        <compiler.source-path path-element="${product.src.dir}" />
        <compiler.source-path path-element="${product.locale.dir}/{locale}" />

        <compiler.library-path dir="${product.basedir}" append="true">
            <include name="libs" />
        </compiler.library-path>

        <warnings>false</warnings>
        <debug>false</debug>
    </mxmlc>

コマンドラインは次のとおりです。

\mxmlc.exe -output "C:\temp\Rap.swf" -load-config "C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in\sdks\3.5.0\frameworks\flex-config.xml" -source-path "C:\Program Files\Adobe\Adobe Flash Builder 4 Plug-in\sdks\3.5.0\frameworks" C:\workspace\folder01\product\src C:\workspace\folder01\product\locale\en_US -library-path+=C:\workspace\folder01\product\libs -file-specs C:\workspace\folder01\product\src\com\company\product\view\main.mxml

おそらくこれを正しく理解していないかもしれませんが、私が理解している限り、MXMLC をソースパスとして指定したパス内のすべてのリソースを使用して SWF をコンパイルする必要があります。何らかの理由で、XML ファイルが SWF にコンパイルされていないように見えるため、XmlContentBuilder の相対パスが正常に見つかりません。

これを解決する可能性のある MXMLC を提供する引数が見つかりませんでした。

Flash Builder のコンパイラで -dump-config オプションを使用して、その構成を MXMLC に渡そうとしましたが、どちらも機能しませんでした。

XmlContentBuilder に絶対パスを指定してみました。Ant 経由で MXMLC を使用してコンパイルした場合は問題なく動作しましたが、コマンドラインで MXMLC を使用した場合はまだ動作しませんでした...

MXMLC の使用、相対パスを使用したリソースへのアクセス、Parsley でのログの構成など、すべての主題に関して、ここで啓発していただければ幸いです。

よろしくお願いします、ダニエル

4

1 に答える 1

0

さて、何が起こっているのか理解できるようになったのは今だけです。

XmlContextBuilder 内の URLLoader がローカルでファイルにアクセスしようとしました (file://)。

Flash Builder はファイルを元の場所 (「src」フォルダー) からターゲットの場所 (「bin-debug」フォルダー) にコピーし、URLLoader によって検出されました。

SWF をコンパイルしたときに、ファイルをターゲットの場所 (エラー メッセージに表示されている「ターゲット」フォルダー) にコピーしませんでした。だから見つからなかった…

さて、XML ファイルに適切にアクセスする方法をもっとよく理解する必要があると思います...

于 2010-05-17T08:29:38.570 に答える