Класс Pack200

@Deprecated(since="11",
            forRemoval=true)
public abstract class Pack200
extends Object
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.
Этот класс устарел и планируется к удалению в будущей версии.

Преобразует файл JAR в или из упакованного потока в формате Pack200. Обратитесь к Спецификации формата сетевого передачи JSR 200

Обычно движок для упаковки используется разработчиками приложений для размещения или размещения файлов JAR на веб-сайте. Движок для распаковки используется приложениями развертывания для преобразования байтового потока обратно в формат JAR.

Вот пример использования упаковщика и распаковщика:

import java.util.jar.Pack200;
    import java.util.jar.Pack200.*;
    ...
    // Create the Packer object
    Packer packer = Pack200.newPacker();

    // Initialize the state by setting the desired properties
    Map p = packer.properties();
    // take more time choosing codings for better compression
    p.put(Packer.EFFORT, "7");  // default is "5"
    // use largest-possible archive segments (>10% better compression).
    p.put(Packer.SEGMENT_LIMIT, "-1");
    // reorder files for better compression.
    p.put(Packer.KEEP_FILE_ORDER, Packer.FALSE);
    // smear modification times to a single value.
    p.put(Packer.MODIFICATION_TIME, Packer.LATEST);
    // ignore all JAR deflation requests,
    // transmitting a single request to use "store" mode.
    p.put(Packer.DEFLATE_HINT, Packer.FALSE);
    // discard debug attributes
    p.put(Packer.CODE_ATTRIBUTE_PFX+"LineNumberTable", Packer.STRIP);
    // throw an error if an attribute is unrecognized
    p.put(Packer.UNKNOWN_ATTRIBUTE, Packer.ERROR);
    // pass one class file uncompressed:
    p.put(Packer.PASS_FILE_PFX+0, "mutants/Rogue.class");
    try {
        JarFile jarFile = new JarFile("/tmp/testref.jar");
        FileOutputStream fos = new FileOutputStream("/tmp/test.pack");
        // Call the packer
        packer.pack(jarFile, fos);
        jarFile.close();
        fos.close();

        File f = new File("/tmp/test.pack");
        FileOutputStream fostream = new FileOutputStream("/tmp/test.jar");
        JarOutputStream jostream = new JarOutputStream(fostream);
        Unpacker unpacker = Pack200.newUnpacker();
        // Call the unpacker
        unpacker.unpack(f, jostream);
        // Must explicitly close the output.
        jostream.close();
    } catch (IOException ioe) {
        ioe.printStackTrace();
    }

Файл Pack200, сжатый с помощью gzip, может быть размещён на веб-серверах HTTP/1.1. Приложения развертывания могут использовать «Accept-Encoding=pack200-gzip». Это указывает серверу, что приложение-клиент желает версию файла, закодированную с помощью Pack200 и дополнительно сжатую с помощью gzip. Обратитесь к Руководству по развертыванию Java для получения подробностей и техник.

Если не указано иное, передача null аргумента конструктору или методу в этом классе приведёт к исключению NullPointerException.

С:
1.5

Вложенные классы

Модификатор и тип Класс Описание
static interface  Pack200.Packer

Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Этот интерфейс устарел и планируется к удалению в будущей версии.

static interface  Pack200.Unpacker

Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Этот интерфейс устарел и планируется к удалению в будущей версии.

Методы

Модификатор и тип Метод Описание
static Pack200.Packer newPacker()

Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Получить новый экземпляр класса, реализующего Packer.

static Pack200.Unpacker newUnpacker()

Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Получить новый экземпляр класса, реализующего Unpacker.

Методы, объявленные в классе java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Методы

newPacker

public static Pack200.Packer newPacker()
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Получить новый экземпляр класса, реализующего Packer.

  • Если системная переменная java.util.jar.Pack200.Packer определена, то её значение считается полным квалифицированным именем конкретного класса реализации, который должен реализовывать Packer. Этот класс загружается и создаётся. Если этот процесс завершается неудачно, генерируется неопределённая ошибка.

  • Если реализация не указана с помощью системной переменной, то используется системный класс реализации по умолчанию, и результат возвращается.

Примечание: возвращаемый объект не гарантирует корректную работу, если им одновременно пользуются несколько потоков. Многопоточное приложение должно либо выделять несколько движков упаковщика, либо сериализовать использование одного движка с помощью блокировки.

Возвращает:
Новый выделенный движок Packer.

newUnpacker

public static Pack200.Unpacker newUnpacker()
Устаревший, подлежит удалению: Этот элемент API может быть удален в будущей версии.

Получить новый экземпляр класса, реализующего Unpacker.

  • Если системная переменная java.util.jar.Pack200.Unpacker определена, то её значение считается полным квалифицированным именем конкретного класса реализации, который должен реализовывать Unpacker. Этот класс загружается и создаётся. Если этот процесс завершается неудачно, генерируется неопределённая ошибка.

  • Если реализация не указана с помощью системной переменной, то используется системный класс реализации по умолчанию, и результат возвращается.

Примечание: возвращаемый объект не гарантирует корректную работу, если им одновременно пользуются несколько потоков. Многопоточное приложение должно либо выделять несколько движков распаковщика, либо сериализовать использование одного движка с помощью блокировки.

Возвращает:
Новый выделенный движок Unpacker.

© 1993, 2020, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/11/docs/api/java.base/java/util/jar/Pack200.html

Spec-Zone .ru
спецификации, руководства, описания, API