我看到 pack200 可以用于 JAR 文件,但它可以用于单个类文件吗?
在为 x.class 提供服务之前,我的网络服务器收到了大量不存在的 x.class.pack.gz 请求。
如果 Java 请求 x.class.pack.gz,这是否意味着可以打包单个类?
在没有 JAR 文件作为输入的情况下运行 pack200 似乎不起作用。
我看到 pack200 可以用于 JAR 文件,但它可以用于单个类文件吗?
在为 x.class 提供服务之前,我的网络服务器收到了大量不存在的 x.class.pack.gz 请求。
如果 Java 请求 x.class.pack.gz,这是否意味着可以打包单个类?
在没有 JAR 文件作为输入的情况下运行 pack200 似乎不起作用。
简短的回答:没有。
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
属性的文档。