Java命令行编译与路径管理全面解析
Java命令行工具"javac"是Java语言开发中的核心组件,用于编译Java源代码文件(.java)为可执行的字节码文件(.class)。本文将详细介绍如何在命令行环境中有效地使用javac,并列举了多个相关的选项参数。 1. 基本用法: - `javac[options][sourcefiles][@files]`: 这个命令的基本结构包括选项(options)、源文件列表(sourcefiles)以及可能的文件集合(@files)。源文件是需要编译的Java源代码文件,而@符号后接的文件则是包含其他文件名的列表。 2. 参数解析: - `options`:这可以包含各种编译器选项,如 `-verbose` 用于显示编译过程的详细信息,`-classpath` 或 `-cp` 指定类路径,`-sourcepath` 则指定源代码文件的查找路径。 - `sourcefiles`:至少需要一个Java源文件作为输入,例如 "MyClass.java"。 - `@files`:通过这种形式,可以一次性引用多个文件名,方便管理大型项目中的源代码。 3. 特殊注意事项: - 当源文件在同一目录下时,可以直接指定文件名;如果不在同一目录,需要提供完整的路径。 - 使用 `@` 符号导入的文件中列出的文件会被依次添加到编译过程中搜索的源文件列表中。 - 类路径(CLASSPATH)对编译至关重要,它指示编译器从哪里查找类库。如果没有显式指定,javac会尝试使用系统默认的类路径。 - 如果源代码中使用了自定义类,确保这些类位于类路径中的某个位置,或者使用`-bootclasspath` 或 `-extdirs` 指定附加的类路径。 4. 编译时注意事项: - 对于嵌套类或内部类(如 `MyClass$MyInnerClass`),编译器会在同一包内查找对应的类文件。 - 如果编译过程中发现错误,javac会停止编译并报告错误,但不会自动清理已编译的部分。 - 对于多线程应用,确保使用`-Xdepend` 选项来生成依赖性报告,这对于理解和维护复杂的项目结构很有帮助。 5. 高级用法: - 对于特定需求,如调试、打包或生成Javadoc,可以结合其他Java命令,如`jar`, `javadoc`等,与javac配合使用。 Java命令行工具javac是Java开发者必备的技能之一,熟练掌握它的使用可以帮助提高开发效率和理解代码构建过程。通过理解并运用这些选项,你可以更有效地组织和编译你的Java源代码,从而实现项目的快速迭代和部署。
javac [ options ] [ sourcefiles ] [ @files ]
参数可按任意次序排列。
options
命令行选项。
sourcefiles
一个或多个要编译的源文件(例如 MyClass.java)。
@files
一个或多个对源文件进行列表的文件。
说明
javac 工具读取用 Java 编程语言编写的类和接口定义,并将它们编译成字节码类文件。
有两种方法可将源代码文件名传递给 javac:
如果源文件数量少,在命令行上列出文件名即可。
如果源文件数量多,则将源文件名列在一个文件中,名称间用空格或回车行来进行分隔。然后在 javac 命令行中使用该列表文件名,文件名前冠以 @ 字符。
源代码文件名称必须含有 .java 后缀,类文件名称必须含有 .class 后缀,源文件和类文件都必须有识别该类的根名。例如,名为 MyClass 的类将写在名为 MyClass.java的源文件中,并被编译为字节码类文件 MyClass.class。
内部类定义产生附加的类文件。这些类文件的名称将内部类和外部类的名称结合在一起,例如 MyClass$MyInnerClass.class。
应当将源文件安排在反映其包树结构的目录树中。例如,如果将所有的源文件放在 /workspace 中,那么 com.mysoft.mypack.MyClass 的代码应该在 \workspace\com\mysoft\mypack\MyClass.java 中。
缺省情况下,编译器将每个类文件与其源文件放在同一目录中。可用 -d 选项(请参阅后面的选项)指定其它目标目录。
查找类型
当编译源文件时,编译器常常需要它还没有识别出的类型的有关信息。对于源文件中使用、扩展或实现的每个类或接口,编译器都需要其类型信息。这包括在源文件中没有明确提及、但通过继承提供信息的类和接口。
例如,当扩展 java.applet.Applet 时还要用到 Applet 的祖先类:java.awt.Panel 、 java.awt.Container、 java.awt.Component 和 java.awt.Object。
当编译器需要类型信息时,它将查找定义类型的源文件或类文件。编译器先在自举类及扩展类中查找,然后在用户类路径中查找。用户类路径通过两种途径来定义:通过设置 CLASSPATH 环境变量或使用 -classpath 命令行选项。(有关详细资料,请参阅设置类路径)。如果使用 -sourcepath 选项,则编译器在 sourcepath 指定的路径中查找源文件;否则,编译器将在用户类路径中查找类文件和源文件。可用-bootclasspath 和 -extdirs 选项来指定不同的自举类或扩展类;参阅下面的联编选项。
成功的类型搜索可能生成类文件、源文件或两者兼有。以下是 javac 对各种情形所进行的处理:
搜索结果只生成类文件而没有源文件: javac 使用类文件。
搜索结果只生成源文件而没有类文件: javac 编译源文件并使用由此生成的类文件。
搜索结果既生成源文件又生成类文件: javac 确定类文件是否过时。若类文件已过时,则 javac 重新编译源文件并使用更新后的类文件。否则, javac 直接使用类文件。
缺省情况下,只要类文件比源文件旧, javac 就认为它已过时。( -Xdepend 选项指定相对来说较慢但却比较可靠的过程。)
注意: javac 可以隐式编译一些没有在命令行中提及的源文件。用 -verbose 选项可跟踪自动编译。
文件列表
为缩短或简化 javac 命令,可以指定一个或多个每行含有一个文件名的文件。在命令行中,采用 '@' 字符加上文件名的方法将它指定为文件列表。当 javac 遇到以 `@' 字符开头的参数时,它对那个文件中所含文件名的操作跟对命令行中文件名的操作是一样的。这使得 Windows 命令行长度不再受限制。
例如,可以在名为 sourcefiles 的文件中列出所有源文件的名称。该文件可能形如:
MyClass1.java
MyClass2.java
MyClass3.java
然后可用下列命令运行编译器:
C:> javac @sourcefiles
选项
编译器有一批标准选项,目前的开发环境支持这些标准选项,将来的版本也将支持它。还有一批附加的非标准选项是目前的虚拟机实现所特有的,将来可能要有变化。非标准选项以 -X 打头。
标准选项
剩余7页未读,继续阅读
- 粉丝: 8
- 资源: 232
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- WebLogic集群配置与管理实战指南
- AIX5.3上安装Weblogic 9.2详细步骤
- 面向对象编程模拟试题详解与解析
- Flex+FMS2.0中文教程:开发流媒体应用的实践指南
- PID调节深入解析:从入门到精通
- 数字水印技术:保护版权的新防线
- 8位数码管显示24小时制数字电子钟程序设计
- Mhdd免费版详细使用教程:硬盘检测与坏道屏蔽
- 操作系统期末复习指南:进程、线程与系统调用详解
- Cognos8性能优化指南:软件参数与报表设计调优
- Cognos8开发入门:从Transformer到ReportStudio
- Cisco 6509交换机配置全面指南
- C#入门:XML基础教程与实例解析
- Matlab振动分析详解:从单自由度到6自由度模型
- Eclipse JDT中的ASTParser详解与核心类介绍
- Java程序员必备资源网站大全