gpt4 book ai didi

java - 通过将源代码复制到我的项目来调试 rt.jar 中的类

转载 作者:行者123 更新时间:2023-11-30 08:10:44 31 4
gpt4 key购买 nike

我刚刚发现有一种简单的方法可以调试/破解我在项目中使用的第三方库。

例如,如果我想调试 org.springframework.beans.factory.support.AbstractBeanDefinition从 spring-beans 中,我需要做的就是在我的项目中使用相同的源在同一包中创建此类的副本。由于我的项目源碰巧出现在类路径的较早位置,ClassLoader将使用它们而不是 spring-bean 中的那些。然后我可以将日志记录/断点/调整添加到标准类行为中,因为源现在在我的控制之下。

但是,这不适用于 rt.jar 中的标准 Java 类。例如,它不适用于 java.util.HashMap 。有没有办法对 rt.jar 类使用相同的方法?

最佳答案

您必须将替换类放在单独的目录或 JAR 文件中,并使用 -Xbootclasspath/p 将其添加到引导类路径中java 的选项命令。您不应分发任何使用此机制来覆盖 rt.jar 的代码。类,但它可以用于调试目的。

请注意,您应该只将引导类路径用于真正需要的东西(替换 rt.jar 中的类的特定类文件)。应用程序的其余部分应保留在由系统类加载器加载的正常类路径上,因为 Bootstrap 和系统加载器之间可能存在其他加载器(例如,用于扩展),如果它是,您的代码将无法使用在引导类路径上。

关于java - 通过将源代码复制到我的项目来调试 rt.jar 中的类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30420551/

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