Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/331.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java类解析以获取调用树_Java_Class_Parsing - Fatal编程技术网

Java类解析以获取调用树

Java类解析以获取调用树,java,class,parsing,Java,Class,Parsing,我正在为一项作业编写一个Java程序,该作业从2个用户输入开始: 已编译java类文件的名称 方法的名称 然后,程序将解析java类,搜索用户输入的方法,并在该方法中搜索该方法调用的其他方法,以及这些方法调用的方法 然后,从这些数据中,程序应该输出方法调用树 classA.method1(参数) classA.method2(参数) classA.method3(参数) classB.method1(参数) 有人能告诉我,为了执行这些操作,我应该使用或学习什么吗?我会使用现有的库来解

我正在为一项作业编写一个Java程序,该作业从2个用户输入开始:

  • 已编译java类文件的名称
  • 方法的名称
  • 然后,程序将解析java类,搜索用户输入的方法,并在该方法中搜索该方法调用的其他方法,以及这些方法调用的方法

    然后,从这些数据中,程序应该输出方法调用树

    • classA.method1(参数)
      • classA.method2(参数)
        • classA.method3(参数)
      • classB.method1(参数)

    有人能告诉我,为了执行这些操作,我应该使用或学习什么吗?

    我会使用现有的库来解析Java源代码,比如。库的选择取决于您将如何使用该代码,问题是我只允许使用标准Java库听起来您已经很好地描述了它。解析Java.class文件并不十分困难——我曾经在几个小时内编写了一个基本的解析器。当然,为了理解.class格式,您需要学习。(基本上,您可以将.class分解为常量池、方法和其他无关内容。遍历每个方法以查找所有调用。在常量池中查找相应的调用目标,并将调用方法/被调用方法添加到表或数据库中,然后从中构建调用树。)