gpt4 book ai didi

java - 是否可以使用检测重新定义核心 JDK 类?

转载 作者:行者123 更新时间:2023-11-30 08:20:42 25 4
gpt4 key购买 nike

我想重新定义 StackOverflowError 构造函数的字节码,以便在发生堆栈溢出时有一个“钩子(Hook)”。我想要做的就是在构造函数的开头插入对我选择的静态方法的单个方法调用。可以这样做吗?

最佳答案

您应该能够使用以下两种方式之一来完成此操作(除非在过去 1-2 年内发生了某些变化,在这种情况下,我希望获得一些指向更改日志/文档的链接):

  1. 在评论中提到,我猜不太可行,修改您感兴趣的类,将它们放入 jar 中,然后使用 -bootclasspath 选项加载它们,而不是默认的。正如之前提到的,这可能会产生一些法律问题(并且通常很难做到)。

  2. 您应该能够(或者至少您曾经能够)instrument几乎所有核心​​类(iirc Class 是我见过的唯一异常(exception))。您可能遇到的许多问题之一是许多核心类在您提供的代理(或者确切地说是它们的 premain 方法)被查询之前被初始化。要克服这个问题,您必须将 Can-Retransform-Classes 属性添加到您的代理 jar 中,然后重新转换您感兴趣的类。请注意,重新转换的功能稍差,并且不会为您提供您通常使用仪器的所有选项,您可以在文档中阅读更多相关信息。

我假设您知道如何进行检测?

关于java - 是否可以使用检测重新定义核心 JDK 类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25859418/

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