gpt4 book ai didi

java - 找出实际加载了哪些Java类并减少jar

转载 作者:搜寻专家 更新时间:2023-10-31 20:31:43 25 4
gpt4 key购买 nike

有没有办法自动找出实际加载了哪些 Java 类(尽可能在编译时加载,或者在应用程序运行时加载),并从 JAR 中丢弃所有其他类以创建一个更小的 jar ?这在实践中真的有意义吗?

我说的是应用程序 JAR 的应用程序类。通常一个应用程序中有很多库,应用程序很少需要这些库的所有功能。所以我怀疑这会使应用程序小得多。理论上,这可以通过一个 Java 代理来完成,该代理记录哪些类和资源被一次或多次运行的应用程序读取(或者甚至只是通过 java -verbose:class),以及一个抛出所有其他类的 Maven 插件来自 jar-with-dependencies。已经有类似的东西了吗?

澄清:我不是在谈论未使用的依赖项(根本不使用的 JAR),而是关于删除每个包含的 JAR 中未使用的部分。

最佳答案

好吧,Maven Shade 插件在为您的应用程序创建 Uber-JAR 时有一个选项 minimizeJar:

https://maven.apache.org/plugins/maven-shade-plugin/

但是,正如其他人已经指出的那样,这是非常危险的,因为它经常无法检测到通过反射或其他动态引用完成的类访问。

关于java - 找出实际加载了哪些Java类并减少jar,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53168158/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com