我正在开发一个java应用程序,但我没有所有源代码。该应用程序基于spring框架,在启动时它会解析来自不同目录的大量xml文件。然后它对给定的 xml 内容进行内部缓存,我想禁用它并在类中进行更改以在需要时读取 xml 内容而不缓存它们。因此,我必须找出哪个类打开我的 xml。
(如果我能找到它,那么我可以请求源代码访问权限,但在那之前我无法访问它。)
关于这个类,我还知道它会解析来自不同目录的大量 xml,因此文件名不会被硬编码到该类中。
本来想用反编译器对类文件进行逆向工程,但是类文件很多,而且包层次太深,无法一一进行。也许有一种方法可以使用 eclipse 插件或命令行工具一次反编译整个 jar 文件,但我不知道如何做。无论如何,也许有一个更简单的解决方案。
有什么想法吗?
最佳答案
这听起来像是调试器的工作。特别是 - 条件断点。
在 Eclipse 中可以这样完成:
- 在
FileInputStream(File)
中设置断点(几乎可以肯定该类将用于读取文件)。 - 在断点 View 中,单击断点 ->“断点属性...”。
- 勾选“有条件”
- 输入一些表达式来检测您感兴趣的文件。例如:
arg0.getPath().endsWith("test.xml")
。 - 启动程序并等待,直到遇到断点。
- 您将能够从堆栈跟踪中获取调用者。
关于java - 如何找到哪个 java 类读取特定的 xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609406/