javac的结构是怎样的?它的查找类型包括哪些内容?

BSO 2020-09-01 16:20:09 java常见问答 4995

在科学技术不断进步改革的今时今日,掌握一门扎实的技术对于每一个人来说都是十分重要的。今天主要为大家介绍一下javac的结构以及它的查找类型主要包括哪些内容。

首先,javac结构主要有:[ options ] [ sourcefiles ] [ @files ]。

参数的含义如下所示:

1.options,命令行选项;

2.sourcefiles,一个或多个要编译的源文件(例如MyClass.java);

3.@files,一个或多个对源文件进行列表的文件。

接下来为大家简要描述下它的查找类型主要包含了哪些内容。

首先,当我们编译源文件时,编译器常常需要的是它没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要这些信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。

举个例子,当扩展 java.applet.Applet时还要用到Applet的祖先类:java.awt.Panel 、java.awt.Container、java.awt.Component和java.awt.Object。

另外,当编译器需要类型信息时,它将查找定义类型的源文件或类文件。

编译器先在自举类及扩展类中查找,然后在用户类路径中查找。用户类路径通过两种途径来定义:⑴通过设置CLASSPATH环境变量或使用-classpath命令行选项;⑵如果使用-sourcepath选项,则编译器在sourcepath指定的路径中查找源文件;⑶编译器将在用户类路径中查找类文件和源文件。可用-bootclasspath和-extdirs选项来指定不同的自举类或扩展类。

可以参考下面的联编选项。

成功的类型搜索可能生成类文件、源文件或两者兼有。以下是javac对各种情形所进行的处理:

1.搜索结果只生成类文件而没有源文件:javac使用类文件。

2.搜索结果只生成源文件而没有类文件:javac编译源文件并使用由此生成的类文件。

3.搜索结果既生成源文件又生成类文件:确定类文件是否过时。若类文件已过时,则javac重新编译源文件并使用更新后的类文件。否则,javac直接使用类文件。

另外,在缺省情况下,只要类文件比源文件旧,javac就认为它已过时。

同时,需要注意的是,javac可以隐式编译一些没有在命令行中提及的源文件。用-verbose选项可跟踪自动编译。

以上就是关于javac的结构解析以及它的查找类型所包含内容的概述。想要了解更多java基础知识,敬请关注奇Q工具网。

推荐阅读:

throws关键字和throw关键字区别详解

java与c在语法上的异同有哪些,包含哪些内容?

java常量类型有哪些?分为哪几类?