我发现 pack200 可以用于 JAR 文件,但它可以用于单个类文件吗?
在提供 x.class 服务之前,我的网络服务器收到大量对不存在的 x.class.pack.gz 的请求。
如果Java请求x.class.pack.gz,这是否意味着可以打包单个类?
在没有 JAR 文件作为输入的情况下运行 pack200 似乎不起作用。
最佳答案
简短回答:否。
Pack200 格式旨在允许跨多个类文件进行更大的压缩,以减少大型 .jar 文件的大小。这是因为 .zip 格式(.jar 格式所基于的)仅单独压缩每个文件,并且不考虑存档中不同文件之间的冗余。
您应该调查是什么导致了对服务器上各个 .class 文件的请求。您的 Java Applet 或 Webstart 应用程序的 JNLP 很可能未打包为 .jar 文件。 JNLP/Applet 类加载器的默认机制会导致请求文件的打包版本 - 并假定为 .jar。将这些文件作为 .class 文件会使类加载器感到困惑。您可以将有问题的 Applet/Webstart 应用程序重新打包为 .jar,或者更改 JNLP 或 Applet 标记,将 jnlp.packEnabled
属性设置为 false
以防止请求。
有关更多信息,请参阅 Oracle's documentation Pack200 和 jnlp.packEnabled
属性。
关于java - pack200 可以用于单个 java 类吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18344430/