Java Hibernate:可以减小jar的文件大小吗?

Java Hibernate:可以减小jar的文件大小吗?,java,hibernate,desktop-application,Java,Hibernate,Desktop Application,我正在开发一个桌面应用程序,我使用Hibernate和HSQLDB。当我把我的应用程序做成一个可运行的jar文件时,它的fize大小比我想象的要大。我看到最大的部分来自Hibernate及其依赖项。我不确定是否需要所有的Hibernate功能。有没有办法去掉Hibernate及其依赖库中我不使用的部分?在Hibernate zip的/lib/文件夹下,您将看到一个名为/required/的文件夹。对于非常基本的Hibernate应用程序,这就是您所需要的,尽管您可能需要额外的JAR来支持JPA之

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

在Hibernate zip的/lib/文件夹下,您将看到一个名为/required/的文件夹。对于非常基本的Hibernate应用程序,这就是您所需要的,尽管您可能需要额外的JAR来支持JPA之类的应用程序。首先,我将只在lib/required/目录中包含JAR,查看您的项目是否正常工作,以及它是否没有添加使项目重新正常工作所需的内容。

也许您可以使用工具分析您的类和依赖项,例如。这是另一篇关于它的帖子:


另一种方法是删除一些JAR甚至单个类文件,然后尝试应用程序是否仍在运行。但我认为这不是一个很好的方法…

我想不出比这更好的工具了

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


所以,Hibernate使用了所有必需的jar,并且没有办法减少它们?不幸的是,是的。您可能可以删除其中一个,但很有可能您添加的新代码会中断,因为Hibernate无法找到所需的jar。