java - 如何找到哪个 java 类读取特定的 xml 文件?

标签 java decompiling

我正在开发一个java应用程序,但我没有所有源代码。该应用程序基于spring框架,在启动时它会解析来自不同目录的大量xml文件。然后它对给定的 xml 内容进行内部缓存,我想禁用它并在类中进行更改以在需要时读取 xml 内容而不缓存它们。因此,我必须找出哪个类打开我的 xml。

(如果我能找到它,那么我可以请求源代码访问权限,但在那之前我无法访问它。)

关于这个类,我还知道它会解析来自不同目录的大量 xml,因此文件名不会被硬编码到该类中。

本来想用反编译器对类文件进行逆向工程,但是类文件很多,而且包层次太深,无法一一进行。也许有一种方法可以使用 eclipse 插件或命令行工具一次反编译整个 jar 文件,但我不知道如何做。无论如何,也许有一个更简单的解决方案。

有什么想法吗?

最佳答案

这听起来像是调试器的工作。特别是 - 条件断点。

在 Eclipse 中可以这样完成:

  1. FileInputStream(File)中设置断点(几乎可以肯定该类将用于读取文件)。
  2. 在断点 View 中,单击断点 ->“断点属性...”。
  3. 勾选“有条件”
  4. 输入一些表达式来检测您感兴趣的文件。例如:arg0.getPath().endsWith("test.xml")
  5. 启动程序并等待,直到遇到断点。
  6. 您将能够从堆栈跟踪中获取调用者。

关于java - 如何找到哪个 java 类读取特定的 xml 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27609406/

相关文章:

java - 真的不可能保护 Android 应用免受逆向工程吗?

java - 通过 LS2J 使用 IBM Notes/Domino 中的 itext/xfaworker

java - 在 Tomcat CP 中找不到 DB2 驱动程序,但 Commons 工作正常?

c# - 将程序集反编译到项目中

c# - 如何反编译 ASP.NET/C# Web 应用程序

c# - 反编译 C# 与 C++

debugging - 反编译 DyLib(动态库)

java - java中如何使用varargs作为Constructor.getConstructor()的参数

java - 通过 HTTP 客户端编写curl 等效 java 代码时遇到问题

java - intelliJ 中的 maven import 选项是否也从远程存储库导入 jar