1

我看到 pack200 可以用于 JAR 文件,但它可以用于单个类文件吗?

在为 x.class 提供服务之前,我的网络服务器收到了大量不存在的 x.class.pack.gz 请求。

如果 Java 请求 x.class.pack.gz,这是否意味着可以打包单个类?

在没有 JAR 文件作为输入的情况下运行 pack200 似乎不起作用。

4

1 回答 1

0

简短的回答:没有。

Pack200 格式旨在允许跨多个类文件进行更大的压缩,以减小大型 .jar 文件的大小。这是因为 .zip 格式(.jar 格式基于此)仅单独压缩每个文件,并且不考虑存档中不同文件之间的冗余。

您应该查看导致服务器上单个 .class 文件请求的原因。您可能有一个用于未打包为 .jar 文件的 Java Applet 或 Webstart 应用程序的 JNLP。JNLP/Applet 类加载器的默认机制会导致对文件打包版本的请求 - 并且假定为 .jar。将这些作为 .class 文件让类加载器感到困惑。您可以将有问题的 Applet/Webstart 应用程序重新打包为 .jar,或者更改 JNLP 或 Applet 标记以将jnlp.packEnabled属性设置为false以阻止请求。

有关详细信息,请参阅Oracle关于 Pack200 和jnlp.packEnabled属性的文档。

于 2013-10-09T23:12:01.740 回答