加载库jar时出错

时间:2012-01-22 09:40:01

标签: java swing jar compression 7zip

我使用7-zip压缩我的库jar文件,超小压缩。但在那之后,当我在Netbeans中使用它时,我的Swing应用程序没有显示我的库jar加载。 Java无法访问库jar文件中的内容。

Java中是否支持7-zip压缩?解决这个问题的任何方法或补救措施?

java的任何其他压缩工具将jar文件压缩到更小的尺寸?


我的jar文件 1 大小是13mb,我的客户认为它是一个很重的加载,他希望它是一个非常小的尺寸。使用pack200,我的罐子大小达到了450mb(这很好)。但最终错误加载到主jar文件中。

  1. 我的应用的Jar库文件。它有DJ原生Swing和其他课程,如PPT阅读器等。

3 个答案:

答案 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并将其嵌入到类加载器中。)