Класс Pack200
- java.lang.Object
-
- java.util.jar.Pack200
@Deprecated(since="11",
forRemoval=true)
public abstract class Pack200
extends Object
Преобразует файл 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()
Получить новый экземпляр класса, реализующего Packer.
Если системная переменная
java.util.jar.Pack200.Packerопределена, то её значение считается полным квалифицированным именем конкретного класса реализации, который должен реализовывать Packer. Этот класс загружается и создаётся. Если этот процесс завершается неудачно, генерируется неопределённая ошибка.Если реализация не указана с помощью системной переменной, то используется системный класс реализации по умолчанию, и результат возвращается.
Примечание: возвращаемый объект не гарантирует корректную работу, если им одновременно пользуются несколько потоков. Многопоточное приложение должно либо выделять несколько движков упаковщика, либо сериализовать использование одного движка с помощью блокировки.
- Возвращает:
- Новый выделенный движок Packer.
newUnpacker
public static Pack200.Unpacker newUnpacker()
Получить новый экземпляр класса, реализующего 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