我使用7-zip压缩我的库jar文件,超小压缩。但在那之后,当我在Netbeans中使用它时,我的Swing应用程序没有显示我的库jar加载。 Java无法访问库jar文件中的内容。
Java中是否支持7-zip压缩?解决这个问题的任何方法或补救措施?
java的任何其他压缩工具将jar文件压缩到更小的尺寸?
我的jar文件 1 大小是13mb,我的客户认为它是一个很重的加载,他希望它是一个非常小的尺寸。使用pack200,我的罐子大小达到了450mb(这很好)。但最终错误加载到主jar文件中。
答案 0 :(得分:3)
使用'标准压缩'或使用pack200来压缩它们 - 这是JVM理解的唯一两种压缩格式。 Jar tool当然非常适合这个目的。我通常会从Ant构建脚本中调用它。
减少可分发类的大小的一种很好的方法是对代码进行模糊处理。虽然最终无法提供“代码保护”功能。对于它们通常使用,混淆通常会使二进制文件显着(40%-60%)变小。
我的应用程序的库文件..它有dj本机swing和其他类如ppt reader等...
尝试混淆和标准压缩。报告大小和成功/失败加载&校验。
因为它显然是桌面应用程序,所以也考虑拆分应用程序。进入单独的Jars并使用Java Web Start懒惰地传递它们。这意味着它们仅在需要时加载。例如。 PPT阅读器可能用于帮助系统。没有必要加载应用程序的帮助。只有当他们点击 F1
时,才能进入屏幕使用延迟加载时,只有在用户请求帮助时才会下载PPT阅读器和帮助文件,然后使用进度对话框。
更好的是,如果API获得更新,只需将更新的Jar加载到服务器,JWS将自动更新客户端上的版本(如果需要 - 例如它不会更新任何' lazy' Jars尚未缓存的。)
答案 1 :(得分:1)
必须使用.jar
工具压缩jar
个文件。格式本身基本上是zip
,带有一些特定于Java的元数据。
我认为标准类加载器不支持其他压缩格式。
答案 2 :(得分:1)
7-zip压缩不支持java
这是正确的。 Java无法处理由某些第三方工具压缩的JAR文件。
最简单的选择是不要这样做。 (摆脱一些电影或任何使用你所有光盘的东西:-))
下一个最简单的选项是在尝试在Java中使用它之前使用7-zip工具解压缩文件。
最后,如果您只是尝试使用此超级压缩的JAR文件来执行您的应用程序,那么可以编写一个使用7-zip的类加载器来动态解压缩JAR文件。 (或者如果发布了7-zip使用的算法,您可以在Java中实现一个uncompressor并将其嵌入到类加载器中。)