【问题标题】:Hibernate: is it possible to reduce file size of jar?Hibernate:是否可以减少 jar 的文件大小?
【发布时间】:2011-09-11 19:09:04
【问题描述】:

我正在开发一个桌面应用程序,我使用 Hibernate 和 HSQLDB。当我使我的应用程序成为一个可运行的 jar 文件时,它的 fize 大小比我想象的要大。我看到最大的部分来自 Hibernate 及其依赖项。我不确定我是否需要所有的 Hibernate 功能。有没有办法摆脱我不使用的部分 Hibernate 及其依赖库?

【问题讨论】:

    标签: java hibernate desktop-application


    【解决方案1】:

    在 Hibernate zip 中的 /lib/ 文件夹下,您将看到一个名为 /required/ 的文件夹。对于非常基本的 Hibernate 应用程序,这就是您所需要的,尽管您可能需要额外的 JAR 来处理诸如 JPA 之类的事情。我将首先将 JAR 包含在 lib/required/ 目录中,看看您的项目是否有效,以及它是否没有添加您需要让您的项目再次运行的内容。

    【讨论】:

    • 那么,Hibernate 使用了所有“必需”的 jar,没有办法减少它们吗?
    • 不幸的是,是的。您可能可以通过删除其中一个而侥幸成功,但您添加的新代码很可能会中断,因为 Hibernate 将无法找到所需的 JAR。
    【解决方案2】:

    也许你可以使用一个工具来分析你的类和依赖项(例如http://www.dependency-analyzer.org/)。这是另一篇关于它的帖子:How do I find out what jar files are actually used when compiling a java project

    另一种方法是删除一些 jars(甚至是单个类文件)并尝试您的应用程序是否仍在工作。但我认为这不是一个很好的方法...

    【讨论】:

      【解决方案3】:

      我想不出比 ProGuard 更好的工具了。

      ProGuard 是一个免费的 Java 类文件收缩器、优化器、混淆器和预验证器。它检测并删除未使用的类、字段、方法和属性。它优化字节码并删除未使用的指令。它使用简短的无意义名称重命名剩余的类、字段和方法。最后,对处理后的代码进行Java 6或Java Micro Edition的预验证。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2015-05-14
        • 2012-05-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多