Класс Pack200
- java.lang.Object
-
- java.util.jar.Pack200
public abstract class Pack200 extends Object
Преобразует файл JAR в или из упакованного потока в формате Pack200. Обратитесь к спецификации JSR 200 Формат сетевого передачи по адресу http://jcp.org/aboutJava/communityprocess/review/jsr200/index.html
Обычно движок упаковщика используется разработчиками приложений для развертывания или размещения файлов 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.
- Since:
- 1.5
Вложенные классы
| Модификатор и тип | Класс и описание |
|---|---|
static interface |
Pack200.Packer Движок упаковщика применяет различные преобразования к входному файлу JAR, делая поток упаковки сильно сжимаемым с помощью сжатия, например, gzip или zip. |
static interface |
Pack200.Unpacker Движок распаковщика преобразует упакованный поток в файл JAR. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
static Pack200.Packer |
newPacker() Получить новый экземпляр класса, реализующего Packer. |
static Pack200.Unpacker |
newUnpacker() Получить новый экземпляр класса, реализующего 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. Этот класс загружается и создается. Если этот процесс завершается неудачей, выбрасывается неопределенная ошибка.Если реализация не была указана с помощью свойства системы, то создается класс реализации по умолчанию, и результат возвращается.
Примечание: возвращаемый объект не гарантирует правильной работы, если он используется несколькими потоками одновременно. Приложение с несколькими потоками должно либо создавать несколько движков упаковщика, либо сериализовать использование одного движка с помощью блокировки.
- Returns:
- Новый выделенный движок упаковщика.
newUnpacker
public static Pack200.Unpacker newUnpacker()
Получить новый экземпляр класса, реализующего Unpacker.
Если свойство системы
java.util.jar.Pack200.Unpackerопределено, то значение принимается как полное имя класса конкретной реализации, которая должна реализовывать Unpacker. Класс загружается и создается. Если этот процесс завершается неудачей, выбрасывается неопределенная ошибка.Если реализация не была указана с помощью свойства системы, то создается класс реализации по умолчанию, и результат возвращается.
Примечание: возвращаемый объект не гарантирует правильной работы, если он используется несколькими потоками одновременно. Приложение с несколькими потоками должно либо создавать несколько движков распаковщика, либо сериализовать использование одного движка с помощью блокировки.
- Returns:
- Новый выделенный движок распаковщика.
© 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.