`
ZangXT
  • 浏览: 118056 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

二.从com.sun.tools.javac.Main开始

SUN 
阅读更多

        Main中的main方法是javac的入口。

 

        main中内容很少,只有两段分支代码

if (args.length > 0 && args[0].equals("-Xjdb")) {

//....

} else{

System.exit(compile(args));

}

使用javac -Xjdb时会进入if部分,和调试有关,暂且不去管它,直接考虑else部分即可。

compile(args)是真正执行编译功能的地方。

public static int compile(String[] args) {
com.sun.tools.javac.main.Main compiler =
new com.sun.tools.javac.main.Main("javac");
return compiler.compile(args);
}

创建com.sun.tools.javac.main.Main 类的对象(其实是构建了一个编译器实例),调用其compile方法,并把编译时获取的参数传递过去。

后面需要进入com.sun.tools.javac.main.Main继续跟踪了。

分享到:
评论

相关推荐

    Javac内核源码

    3. **类型检查**:在 `com.sun.tools.javac.main.JavaCompiler` 类中,编译器会进行类型检查,确保所有的表达式和语句在类型上是正确的。这包括变量声明、方法调用、赋值操作等。 4. **类与接口解析**:编译器需要...

    tools-1.8.0.jar.zip

    2. **使用Java 9及以上版本的模块系统**: 从Java 9开始,`tools.jar`被模块化,不再直接可用。需要通过`--add-modules`选项来访问,例如: ```bash javac --add-modules=javafx.base,javafx.graphics --module-...

    javac源码免费下载

    `com.sun.tools.javac.main.Main`类在这个过程中扮演了关键角色,它负责编译任务的整体调度。类型检查由`com.sun.tools.javac.code.Type`和`com.sun.tools.javac.code.Symbol`类协同完成,确保程序符合Java语言规范...

    javac 源码 javac 源码

    javac 命令行支持多种选项,如 `-g` 用于添加调试信息,`-classpath` 定义类路径,`-source` 指定 Java 版本等,这些选项通过 `com.sun.tools.javac.main.Main` 类的 `compile` 方法处理。 深入研究 javac 源码...

    javac-source-code-reading:javac源码调试-java source code

    这个过程中涉及的类主要包括 `com.sun.tools.javac.main.Main`,它是 javac 的主入口点,以及 `com.sun.tools.javac.parser.JavacParser`,负责解析源代码。 在阅读和调试 javac 源码时,有几点需要注意: 1. **...

    java编译器源代码

    源代码中包含多个模块,如`com.sun.tools.javac.main`,`com.sun.tools.javac.parser`,`com.sun.tools.javac.code`等,分别对应不同的编译阶段。 2. **词法分析**: 这是编译的第一步,由`...

    srcjavc源码学习.zip

    - `com.sun.tools.javac.Main`:这是`javac`命令的主入口点,负责启动编译过程。 - `com.sun.tools.javac.parser`:包含词法和语法分析的相关实现。 - `com.sun.tools.javac.tree`:存储抽象语法树的相关类。 - `...

    javac源码和运行说明文件.zip

    - Java编译器源码主要位于openjdk的`src/jdk.compiler/share/classes/com/sun/tools/javac`目录下,包括多个子模块,如parser(解析器)、main(主程序入口)、tree(抽象语法树)等。 - 源码中包含了处理类路径、...

    JDK中rt.jar、tools.jar和dt.jar作用.pdf

    这些类主要位于`sun.tools.java.*`和`sun.tools.javac.*`包下,例如javac编译器就依赖于tools.jar。当我们执行`javac`命令编译Java源代码时,实际上是通过Java虚拟机执行了`java -classpath %JAVA_HOME%\lib\tools....

    tools and ant jar

    例如,如果你想要在代码中调用Java编译器进行动态编译,你可以导入`com.sun.tools.javac.Main`类并调用其`compile`方法。这对于自动化构建过程或者在运行时编译源代码非常有用。 接下来,我们来看"ant.jar"。Apache...

    用poi将Excel数据导入数据库/java tools.jar动态类的生成

    最后,通过`com.sun.tools.javac.Main.compile()`方法编译源代码,如果成功,使用`Class.forName()`加载生成的类,然后实例化并调用其方法。 至于扩展部分,可能的方向包括优化数据读取和导入性能,例如通过多线程...

    compilador.pdf

    Java 1.4引入了`com.sun.tools.javac.Main`类,该类提供了静态方法`compile`用于编译Java源代码。以下是一个简单的示例: ```java import com.sun.tools.javac.Main; public class RealTimeCompiler { public ...

    ant编译时抛出OutOfMemoryError.doc

    当Ant在执行`javac`时,它会调用JDK的`javac`编译器,这实际上是在 `%JAVA_HOME%\lib\tools.jar` 包内的 `com.sun.tools.javac.main.Main` 类中实现的。当内存不足时,不论是Ant本身还是单独的`javac`进程,都会抛出...

    Java知识_文档

    lib目录:工具程序实际上会使用的Java工具类(例如,javac工具程序实际上会去使用tools.jar中的com/sun/tools/javac/Main类)。 src.zip:Java提供的API类的源代码压缩文件,如果需要查看API的某些功能如何实现,...

    Java深度历险[借鉴].pdf

    `javac.exe`是一个包装器,它的作用是简化开发者输入的命令,实质上是调用`java`命令并指定`classpath`为`tools.jar`来执行`com.sun.tools.javac.Main`。同样,J2ME开发中,工具会生成jar文件,并通过一个RPC外壳使...

    Java深度历险.pdf

    java -classpath x:\jdk1.xx\lib\tools.jar com.sun.tools.javac.Main ``` 这表明JDK工具本身也是Java应用程序的一部分,因此在使用这些工具时,需要依赖JRE。这也是为什么JDK安装包中包含了一套JRE的原因之一。 #...

    Tomcat安装配置[收集].pdf

    2. **J2SDK 版本:** v1.4.2_04,可以从Sun官方网站下载:`http://Java .sun.com/ J2SE/1.4.2/download.html`。 3. **Tomcat 版本:** v5.0.28,可以从Apache官方网站下载:`...

    基于SNT的科学计算器

    这个计算器全部用的是java类库提供的方法,并采用动态编译技术com.sun.tools.javac.Main。用户所有的输入都由计算器本身提供的按钮来实现,计算器本身不对用户输入是否合法进行检测,只是在进行动态编译不能通过时...

    Java环境配置及Eclipse入门.doc

    在SUN公司(现在已被Oracle收购)的官网上可以下载JDK安装包,网址为http://java.sun.com/javaee/downloads/。安装完成后,我们需要配置三个重要的环境变量:JAVA_HOME、PATH和CLASSPATH。 JAVA_HOME变量应指向JDK...

Global site tag (gtag.js) - Google Analytics