【问题标题】:Error loading library jar加载库 jar 时出错
【发布时间】:2012-01-22 20:16:46
【问题描述】:

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

Java 不支持 7-zip 压缩吗?有什么方法或补救措施可以解决这个问题?

还有其他的java压缩工具可以将jar文件压缩到更小的尺寸吗?


我的 jar 文件1 大小为 13mb,我的客户觉得加载起来很重,他希望它的大小非常小。使用 pack200,我将 jar 大小设置为 4.5mb(这很好)。但最终将错误加载到主 jar 文件中。

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

【问题讨论】:

    标签: java swing jar compression 7zip


    【解决方案1】:

    使用“标准压缩”或使用 pack200 压缩它们 - JVM 可以理解的仅有的两种压缩格式。 Jar tool 当然非常适合这个目的。我通常会从 Ant 构建脚本中调用它。


    减少可分发的类大小的一个好方法是混淆代码。虽然最终无法提供通常使用的“代码保护”,但混淆通常会使二进制文件显着 (40%-60%) 更小。


    我的应用程序的库文件.. 它有 dj native swing 和其他类,如 ppt 阅读器等......

    试试混淆和标准压缩。报告大小和成功/失败以加载和验证。

    既然它显然是一个桌面应用程序,也可以考虑拆分应用程序。放入单独的罐子并使用Java Web Start 懒惰地交付它们。这意味着它们仅在需要时才加载。例如。 PPT阅读器可能用于帮助系统。无需加载应用程序的帮助。只有当他们按下 F1

    时才能显示在屏幕上

    通过延迟加载,只有在用户请求帮助时才会下载 PPT 阅读器和帮助文件,然后会出现一个进度对话框。

    更好的是,如果 API 获得更新,只需将更新的 Jar 加载到服务器,JWS 就会自动更新客户端上的版本(如果需要 - 例如,它不会更新任何尚未更新的“惰性”Jar缓存)。

    【讨论】:

    • 您能否提供有关使用 pack200 打包 jar 的详细信息,因为我对我发现的有关 pack200 compress 的文章非常困惑。有没有我可以理解和使用 pack200 压缩 jar 文件的文章。 . 我尝试了许多导致失败的示例...我使用 netbeans 7.0 和 java 1.6
    • 啊...好吧,我的 jar 文件大小是 13mb,我的客户觉得加载起来很重,他希望它的大小非常小.. 使用 pack200 我得到了 jar 大小4.5mb,我想要它..但最终错误加载到主 jar 文件中..
    • 这就是我的应用程序的库文件。它有 dj native swing 和其他类,如 ppt 阅读器等......
    【解决方案2】:

    .jar 文件必须使用jar 工具进行压缩。格式本身本质上是 zip,带有一些特定于 Java 的元数据。

    我认为标准类加载器不支持其他压缩格式。

    【讨论】:

      【解决方案3】:

      java 不支持 7-zip 压缩吗

      没错。 Java 无法处理已被某些 3rd 方工具压缩的 JAR 文件。

      最简单的选择是不这样做。 (摆脱其中一些电影或任何正在使用您所有光盘的电影 :-))

      下一个最简单的选择是使用 7-zip 工具解压缩文件,然后再尝试在 Java 中使用它。

      最后,如果您只是尝试使用这个超级压缩的 JAR 文件来执行您的应用程序,那么您可以编写一个使用 7-zip 的类加载器来即时解压缩 JAR 文件。 (或者如果发布了 7-zip 使用的算法,您可以在 Java 中实现一个解压缩器并将其嵌入到您的类加载器中。)

      【讨论】:

      • 7zip 类加载器会有一个额外的问题——7-zip 算法需要很大的数据空间来保存字典,这可能超过了 JVM 可用的空间。我相信 Ultra 压缩需要几百兆字节。
      猜你喜欢
      • 1970-01-01
      • 2017-07-12
      • 2020-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-10-20
      • 1970-01-01
      • 2011-05-29
      相关资源
      最近更新 更多