我看到pack200可以在JAR文件上使用,但是它可以用在单个类文件上吗?
我的网络服务器收到大量x.class.pack.gz的请求,这些请求在提供x.class之前不存在。
如果Java请求x.class.pack.gz,这是否意味着可以打包单个类?
运行没有JAR文件作为输入的pack200似乎不起作用。
答案 0 :(得分:0)
简短回答:不。
Pack200格式旨在允许跨多个类文件进行更大的压缩,以减少大型.jar文件的大小。这是因为.zip格式(.jar格式所基于的格式)仅单独压缩每个文件,并不考虑存档中不同文件的冗余。
您应该查看导致服务器上各个.class文件请求的原因。您可能有一个JNLP用于Java Applet或Webstart应用程序,该应用程序未打包为.jar文件。 JNLP / Applet类加载器的默认机制导致对文件的打包版本的请求 - 并且假定为.jar。将这些作为.class文件混淆了类加载器。您可以将违规的Applet / Webstart应用程序重新打包为.jar,也可以更改JNLP或Applet标记以将jnlp.packEnabled
属性设置为false
以阻止请求。
有关详细信息,请参阅Pack200上的Oracle's documentation和jnlp.packEnabled
属性。