【问题标题】:Can I have my application use my own implementation of a class instead of the class from a external jar我可以让我的应用程序使用我自己的类实现而不是外部 jar 中的类吗
【发布时间】:2022-01-21 16:27:15
【问题描述】:

我有一个外部 jar 正在加载一个类的情况,该类具有一个静态块来初始化一些配置,我想阻止这种情况发生。我看到的唯一方法是提取该 jar 并删除该类文件并编写我自己的该类的实现。可以这样做还是有什么办法可以阻止该类加载并加载我自己的实现

【问题讨论】:

  • 您可以创建一个与 JAR 中不需要的类同名并打包的类。如果这个类出现在类路径中的 JAR 之前,那么你的类将被加载而不是原来的。
  • 我更改了标题,因为它规定了您的问题的解决方案,现在标题反映了这一点。

标签: java class static block


【解决方案1】:

JAR 文件是一种基于流行的 ZIP 文件格式的文件格式,用于将多个文件聚合为一个文件。 JAR 文件本质上是一个 zip 文件,其中包含一个可选的 META-INF 目录。

见:https://docs.oracle.com/en/java/javase/11/docs/specs/jar/jar.html

因此可以替换类文件。但我更喜欢 vanje 在您的问题评论中建议的方式。

【讨论】:

    猜你喜欢
    • 2012-11-24
    • 1970-01-01
    • 2014-01-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多