【问题标题】:Where in the java compiler source code does the compiler look for .java files to compile编译器在 java 编译器源代码的哪个位置查找 .java 文件进行编译
【发布时间】:2014-07-25 09:35:33
【问题描述】:

我目前正在从事一个需要了解 Java 编译器源代码的项目。我以前从未参与过这么大的项目,我需要一些帮助。

我想知道编译器实际上是在源代码的哪一部分寻找并找到一个 .java 文件进行编译。

我查看了非常大的 java 编译器源代码。我发现解析和代码生成阶段是相互独立的,但我不知道 javac 在哪里请求 .java 文件以及该文件在哪里提供给它。

非常感谢您对此的任何帮助。

【问题讨论】:

  • 应该在第一阶段吗?词法分析->语义分析->(类型检查)->代码生成。顺便说一句,涉及大量 javac 是什么意思?
  • 你说的“会涉及很多javac”是什么意思?你真的需要弄乱编译器本身吗?
  • 您可以通过命令行指定位置。还是您的问题与动态生成、编译和加载代码有关?
  • 我已经编辑了我的问题。是的,我的问题与动态生成、编译和加载代码有关。 javac 在哪里寻找 .java 文件来做到这一点?

标签: java parsing code-generation javac


【解决方案1】:

javax.tools 包为您的 JDK (JavaCompiler) 中的 Java 编译器提供了一个基于 Java 的接口。

JavaCompiler 使用JavaFileManager 的方法来查找和访问要编译的源文件。 StandardFileManager(默认使用)提供了一个 getJavaFileObjectsFromFiles() 方法,该方法提供对给定根目录中找到的所有 java 文件的迭代。

上面的链接将带您到 JDK 源代码(如果您真的想在修改这些源代码后推出自己的版本,请阅读 this);以及 StandardFileManager 的 JavaDoc。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-03
    • 2016-03-14
    • 2017-04-20
    • 2020-08-20
    • 1970-01-01
    • 1970-01-01
    • 2012-09-30
    • 1970-01-01
    相关资源
    最近更新 更多