Кирилл Данилов (donz_ru) wrote,
Кирилл Данилов
donz_ru

JAR != ZIP и явовские баги

Из-за бага, допущенного Sun хрен знает когда и до сих пор присутствующем в JDK, поимел небольшой геморрой.
В JAR'е первым элементом обязательно должен быть манифест. Это его главное отличие от простого ZIP'а, в котором присутствует этот же файл. Если он не первый, то JarInputStream.getManifest() вернет null. А код, который вызывает этот метод, будет считать, что манифеста нет, и ругаться, что джар неправильный.
С другой стороны, если паковать через JarOutputStream( OutputStream os, Manifest man ), то вроде как все должно быть нормуль. Но тут вылазит баг МЕшных VM на мобилах и в эмуляторах. Если какой-либо атрибут более 72 символов, то по спецификации манифеста должен быть перенос строки. Но как минимум KVM из Sun WTK не понимает настолько "хитрый" маневр и считает атрибут запорченным. А строка в более чем 72 символа запросто достигается в MIDlet-Permissions при перечислении всех классов, для которых понадобится разрешение. Приходится делать свою реализацию манифеста и писать его как обычный файл, только самым первым.
Вот, блин, такие дела. Баг на баге. Плюс Sun'овский WTK выдает ошибки, не соответствующие действительности.
Сейчас написал баг-репорт в сан, посмотрим, что скажут.
Tags: j2me, java, mobile, sun, программирование
Subscribe

  • Ода Lenovo

    По картинке уже, наверное, поняли, о чем будет речь. В одну прекрасную субботу я налил в кружку пива, собрался выяснить, кто там…

  • Не обновляйте приложение МТС!

    Зашел сегодня посмотреть баланс в приложуху МТС. Сколько минут, гигабайт осталось в пакете. Проверить, не исчерпал ли бесплатные…

  • Нафига 14-дюймовому дисплею 4К?

    Новый ноут оказался с 4K экраном. Не то, чтобы он мне нужен - на 14 дюймах совершенно пофиг QHD будет, 4К или даже старый добрый…

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 2 comments