« Google サイエンス フェア | Home | ライセンスやらアカウントやら »

Feb 222012

Flash Developで2回目以降のコンパイルがエラーになる

Androidの実装環境を設定したら、Flash Developでコンパイルエラーが出るようになった。
エラーメッセージは

Error: Comparison method violates its general contract!
Build halted with errors (fcsh).

常にという訳ではなく、FDを起動して初回のコンパイルは問題なく実行できる。
そのまま修正などして再度コンパイルすると上記のエラーが発生する。
ビルドを[Debug]<>[Release]に切り替えると、エラーは発生しない。

なので、まぁ都度[Debug]<>[Release]を切り替えつつコンパイルすれば対応は出来るのだけど、面倒くさい。同じ問題は色々発生しているようで、FlashDevelop.org - View topic - Error: Comparison method violates its general contract!にその辺の情報が集まっている。

JDK1.7を入れたことに付随する問題のようだが、Androidの制作環境構築でどこがどうだったかさっぱり思い出せず、Android環境の再構築の手間を考えるとJDK1.7のアンインストールも躊躇してしまう。

色々試しているものの、未だ解決に至らず・・・という状況。

ちなみに環境は
Win7(x64)
Flash Develop(3.3.4)
Javaはx86,x64共にjdk1.6.0_30、jdk1.7.0_02、jre6、jre7
(Javaに関してはEclipseやらAndroidの関係でカオスな状態)

add

You should install Java 1.6 in parallel and set it's path (not including '/bin') as java.home in Flex SDK's jvm.config.
これは色々試してみたもののどーもうまく機能しないっぽい。

add
続いてFDを最新版にアップデートしてみた。
FDのインストール中にFlex SDKやらのDLインストールが失敗していたが、起動後Project PropertyでSDKを設定。しかしやはり同じ状態。FlashDevelop.org - View topic - Error: Comparison method violates its general contract!

use Project-Clean, solved me issue.
と書いてあって、たしかに解決するのだが、単純にFCSHがクリアされていているだけで、都度最初からコンパイルという感じ・・・。
うーむ。

あ、ちなみになんで今頃FDアップデートしてるんだ?って話は単純にFD4のアイコンが嫌いだったからというだけ・・。前のほうが良かった。


add
色々なProjectで検証してたら、どうもエラーが発生するのはMolehill用にカスタムしたFlexSDKを参照している時だけっぽい。ということで、ちょっとFlex自体を最新にしてみる。


add
Flex4.6インストールして書き出しバージョンを11.0に変更してみるも、やはり初回だけOKという感じ。
10.x系は問題なく書き出せる。playerglobalの問題なのかしらね?
なんかFlex/frameworks/libs/player以下の各バージョン定義フォルダの中を見ると"FlashDevelopNotice.txt"というテキストファイルが配置してあって、

This 'playerglobal.swc' was copied here automatically by FlashDevelop from:
C:\Program Files (x86)\FlashDevelop\Tools\flexlibs\frameworks\libs\player\11.0\playerglobal.swc
とか書かれていた。どうも出力バージョンをFlash Develop側で管理するようになったっぽい。(昔はFlexの中に手動でディレクトリを作って配置していた気がするが・・・)
ということで、未だ解決に至らず・・・。

2 Comments

エラーを検索してたどり着きました昔のファイルだったのでなんのエラーだかわからなくて助かりましたありがとうございます。感謝

お役に立てて何よりです。私は環境が変わってしまって、きちんと解決しないままでした・・・汗

Leave a comment

Search and Archives