Кирилл Данилов (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

  • Новость-молния из Дахаба!

    У съема квартиры в Дахабе есть и минусы - сижу и жду, когда починят участок говнопровода между моим и нижним этажом. Зато наконец появилось время на…

  • Пересмотр приоритетов в логистике

    В рамках начала подведения итогов года. У меня с ковидом нормально так изменилось отношение к удобству в транспорте. Раньше на…

  • Нафига 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