java - 在Java中,如何从类文件中获取抽象语法树?

标签 java eclipse-plugin abstract-syntax-tree eclipse-jdt jikes

众所周知,我们可以使用类似的工具从源代码中获取抽象语法树

org.eclipse.jdt.astview

但是给定编译后的类文件,如何获取 AST?有现成的工具吗? 烟灰能做到吗?

谢谢!

最佳答案

But given the compiled class files, how to get the ASTs?

你不能。从技术上来说,从“.class”文件重建原始源代码的 AST 是不可能的。许多需要的信息不再以任何形式存在,而其他信息已经发生了不可逆转的转变。

Is there any existing tools?

没有。

标准的“答案”是使用反编译器,但是:

  • 反编译器无法重建原始 AST(见上文)
  • 反编译器的输出通常与原始源代码相差甚远
  • 通常反编译的代码甚至无法编译。

关于java - 在Java中,如何从类文件中获取抽象语法树?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11099787/

相关文章:

java - 何时使用静态方法

java - 在 OSGI Bundle 中查找文件和文件夹

java - Hadoop 2.6.0 的 Eclipse 插件

java - Eclipse 插件开发以编程方式在工作区之外创建项目

java - 如何在 AST eclipse 中检索有关类的继承信息?

python - 在保留注释的同时修改 python AST

java - 在javafx中沿X轴旋转滚动 Pane - 类似星球大战的效果

java - Java中增强for循环的语法是什么?

java - 在 JBOSS for DB2 中创建数据源

python - Python 到 CIL(C 中间语言)的翻译