Flash 5005エラー考

Filed under AS3, Flash, トラブルシューティング
Tagged as ,

とある大きなプロジェクトで作っているflaファイルをパブリッシュしていたら、今まで見たことのないエラーが出てきました。
「5005: バイトコードの最適化中に不明なエラーが発生しました。」(英語版では次のように表記されるらしいです→“5005: Unknown error optimizing byte code”
ちなみに、私の環境はWindowsXP SP3, Adobe Flash CS3 Professionalですが、MacOSXやCS4でも発生するようです。以下に私の場合の対策手順とか書きますが、環境によっては若干違っていたり、対策が効かなかったりすると思いますので、その場合には参考にして、いくつかの対策をとってみると直る可能性があります。
以降、このエラーを「5005エラー」と呼ぶことにします。

5005エラー

5005エラーについて一番いろいろな情報が集まっているのは、次のブログエントリ(英語)です。

日本語情報では、Saqooshaさんが次のブログエントリにまとめておられます。

日本語の方で分かりやすいような気もしますが、negushさんのブログに書かれている情報(元記事とコメント)は、根本的な問題から、実に様々な対策に触れていて興味深いので、こちらの情報を元に考えたことをまとめておきたいと思います。

最初の対策:最適化をOFFにする

5005エラーが出るのは、「最適化」中に発生する問題なので、その設定をOFFにすればよい、という話が出ています。
これを行うには、「パブリッシュ設定」の中の「ActionScriptの設定」をクリックして出てくるダイアログの中の「オプティマイザ □ ファイルサイズを縮小し、パフォーマンスを向上」というチェックボックスに入っているチェックを外します。
5005error-1optimizer
しかし、もちろん、このチェックを外すとファイルサイズは縮小されず、パフォーマンスに問題が出るかもしれません。
私の環境ではちょっとこの対策は行えない、と判断し、確認しませんでした。
というわけで、ほとんど実用的な解決策ではありませんが、もし対策可能なケースがあれば、これが最も簡単な対策となります。

次の対策:ASOファイルを削除する

ASOファイルという中間出力ファイルが壊れてしまって、パブリッシュ時に5005エラーが出ているケースもあるらしいです。
そのケースへの対応は、ASOファイルを一旦削除する、ということになります。これは、「制御」メニューから「ASOファイルを削除」という項目を選びます。
5005error-2aso
私のケースでは解決できませんでしたが、簡単なのでとりあえず試してみる価値はありますね。

メインの対策:その1

最後にして、メインとなる解決方法が、この方法。
ただしこの方法、FlashやPCの再起動を繰り返すことになるので、やる前にいろいろな作業を終えてから腰を据えてやった方がよいでしょう。
やる方法は、環境変数を変更する、というもの。
“JAVA_TOOL_OPTIONS”という環境変数を、“-Xmx1024M”にします。
Windowsの場合、「マイコンピュータ」を右クリック、「詳細設定」タブの下部にある「環境変数」ボタンを押すと「環境変数」というウィンドウ内が開きます。その下部にある「システム環境変数」というところで設定します。
現在設定されている内容がない場合、「新規」ボタンを押して、「変数名」に JAVA_TOOL_OPTIONS 、「変数値」に -Xmx1024M を入力し「OK」を押します。
これでWindowsを再起動して、Flashを開き、問題の発生したflaファイルでパブリッシュしてみます。
これでうまくいくことが多いらしいです。

メインの対策:その2

しかし!!!!私の場合パブリッシュ時にエラーが出るようになってしまいました。
次のようなダイアログが出ます→「JRE (Java Runtime Environment) の初期化時にエラーが発生しました。Flash を再インストールする必要があります。」
5005error-3jreerror
なんだこれー!!!!
と頭に血を上らせる前に、ひとつ深呼吸して、ここまでの設定した項目やエラーダイアログの内容を考えてみましょう。
すると、「Flashは、出力されたswfファイルを最適化するのにJAVAライブラリを使っている」という推測が出来ます。で、パブリッシュ対象のActionScriptクラスが肥大化してしまうと、最適化の作業領域としてJAVAライブラリに割り当てられたメモリ量では足りなくなってしまって5005エラーが出てしまっていた、という状況であることも推測できます。
そこで噂の対策法ではそのJAVAライブラリに割り当てるメモリ量を多めに指定することで解決できているのでしょう。
しかし、私の場合こんどは初期化時のエラーが出てしまった。これは割り当てられたメモリ量がPCの空きメモリ量を超えてしまっている、と想像できます。
環境変数の変数値に割り当てた”-Xmx1024M”の後半はおそらく”1024MByte”。私のPCに乗っかっているメモリ量は2GBなのでこれではきついことが容易に想像できます。
となると、あとはその数値を下げていくだけです。
512MB、256MBと下げていき、エラーが出続けていたのですが、ようやく”-Xmx128M”という設定で解決しました。
中には”-Xmx32M”でうまくいったという人もいるようなので、根気強く試してみてください。

このエラーで分かったこと

Flashのswf最適化にはおそらくJavaライブラリを使っている、と書いたのですが、JavaだとOptimizerとかObfuscatorっていろいろあるようですから、そういうモノの一つを改変して使っていると想像できます。
また、パブリッシュ時に「JRE初期化エラー」が出るタイミング、そのタイミングから最適化処理に入るのだろう、ということも分かります。
このあたり、もう少し突っ込んで調べてみたらおもしろいかもしれませんね。
以上、いろいろ想像混じりで調べてみましたが、もし、5005エラーが出てこのエントリにたどりついた方がおられましたら、このエントリが5005エラー対策の一助となればうれしく思います。


[AD]
↓AS3で遊ぶならこの本!

Flash Math & Physics Design ActionScript 3.0による数学・物理学表現[実践編]

著者/訳者:古堅 真彦

出版社:ソフトバンククリエイティブ( 2010-05-20 )

定価:¥ 3,456

Amazon価格:¥ 3,456

大型本 ( 440 ページ )

ISBN-10 : 479735822X

ISBN-13 : 9784797358223



↓AS3、もう一度基礎から勉強しませんか?

基本からしっかりわかるActionScript 3.0 (Web Designing BOOKS)

著者/訳者:森 巧尚

出版社:毎日コミュニケーションズ( 2009-07-14 )

定価:¥ 2,592

Amazon価格:¥ 2,592

単行本(ソフトカバー) ( 256 ページ )

ISBN-10 : 4839930252

ISBN-13 : 9784839930257


One Comment

  1. […] どうしたものかと思案を巡らせて、思いついたのは以前ハマった「5005エラー」。 […]

Post a Comment

Your email is never published nor shared. Required fields are marked *

*
*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)