Недавно столкнулся с внезапной ошибкой компиляции AS3 проекта во FlashDevelop-е. Компилил себе нормально и вдруг в очередной раз выскакивают такие строчки:
…
Error: Comparison method violates its general contract!
Build halted with errors (fcsh).
…
Как мне удалось это исправить — читаем дальше…
Вот такие дела предающие дискомфортность. Причём при перезапуске FlashDevelop-а первая компиляция проходит хорошо, а последующие с этой же ошибкой.
Выяснил, что всё дело в нововведениях в последней Java версии 7 и что на Java 6 компилятор будет вести себя послушно.
Нашёл заметку о том, что помогает Shift+F8, перед самой компиляцией(F8 или F5). Да, правда помогает, но тыкать постоянно 3 клавиши вместо одной меня не устраивало и я начал копать.
Сначала дал слабину — откатил Java на 6-ю версию, всё стало хорошо, при этом не надо было даже переустанавливать FD.
НО! Запись на моём любимом screenr.com перестала запускаться, т.к. ей постоянно необходима последняя Java. А я так люблю этот сервис… Самый удобный сервис, когда надо по быстрому записать небольшой видос)
И я начал разбираться дальше!
В результате был найден следующий способ:
сначала ставим Java6 в одну папку, потом ставим Java7 в другую папку, а потом ищем в папке FlexSDK, такой вот файл:
…\FlashDevelop\Tools\flexsdk\bin\jvm.config
Открываем его текстовиком и правим некоторые строки, чтобы получилось нечто следующее:
прописываем путь куда вы установили Java6:
java.home=c:\Program Files\Java\jre6\
и прописываем путь до папки lib в Java6:
java.library.path=c:\Program Files\Java\jre6\lib\
Теперь перезапускам FD, если не помогло, то можно и комп перезагрузить и проверяем компиляцию — всё должно работать без вышеупомянутой ошибки!
Вот и всё!)
UPD:
В дальнейшем, при автоматической переустановке явы проблема иногда возвращалась, а так же я нашёл другу возможную причину: кривая компиляция библиотеки .swc, которую вы подключаете в вашем проекте в FD. Кривая в смысле с какими-либо касяками-недочётами, которые должны исправляться простой перекомпиляцией (перепубликацией). Для проверки этой причины можно просто отключить все .swc от проекта и подряд по нажимать F8. Если ошибка перестанет появляться, то причина в библиотеках.
Так же замечал, что причина этой ошибки может быть в русских наименованиях элементов в библиотеке .swc.