64-битный инфлятор JDK 1.7 выбрасывает неверную длину кода

1

Перед нами стоит странная проблема миграции с JDK 1.7 32-bit на 64-разрядную. В нашем приложении мы используем JDK Zip-библиотеку для сжатия и распаковки байта [] и готовим QR-код (используя zxing). Все работает отлично на 32-битном JDK 1.7, но при раздувании JDK 1.7 сбой происходит со следующим Исключением:

java.util.zip.DataFormatException: invalid code lengths set
at java.util.zip.Inflater.inflateBytes(Native Method)
at java.util.zip.Inflater.inflate(Inflater.java:259)
at java.util.zip.Inflater.inflate(Inflater.java:280)

Такое же поведение наблюдается в JDK 1.8 32-бит.

Соответствующий код

public static byte[] compress(String s) {
    Deflater comp = new Deflater();

    comp.setInput(s.getBytes());

    comp.finish();
    ByteArrayOutputStream bos = new ByteArrayOutputStream(s.length());

    byte[] buf = new byte[1024];
    try {
        while (!(comp.finished())) {
            int count = comp.deflate(buf);
            bos.write(buf, 0, count);
        }
        bos.close();
    } catch (Exception e) {
    }

    byte[] compressedData = bos.toByteArray();

    return compressedData;
}

public static byte[] decompress(byte[] b) {
    Inflater decomp = new Inflater();

    decomp.setInput(b);
    ByteArrayOutputStream bos = new ByteArrayOutputStream(b.length);

    byte[] buf = new byte[1024];
    try {
        while (!(decomp.finished())) {
            int count = decomp.inflate(buf);
            bos.write(buf, 0, count);
        }
        bos.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    byte[] decompressedData = bos.toByteArray();
    return decompressedData;
}

Буду признателен за любую оказанную помощь.

  • 1
    У нас также были проблемы с jdk-zip-lib. Это было программное обеспечение для обмена сообщениями между системами через программное обеспечение промежуточного программного обеспечения, которое имеет определенный размер для своих сообщений. Такими системами были windows / linux / unix, а также разные jdk и / или jre ... в конце концов, мы переключились на commons-compress, ...
  • 0
    В jdk zip lib есть много ошибок, мы столкнулись с тем же, что и slowy, переключитесь на common-compress
Показать ещё 1 комментарий
Теги:
zip

1 ответ

-1

Ваш метод сжатия обнаруживает исключения, но не регистрирует их. Возможно, сжатие тоже не работает, но вы его не замечаете, потому что вы не регистрируете

Ещё вопросы

Сообщество Overcoder
Наверх
Меню