当前位置: 首页 > news >正文

[创建和构建应用程序的主要工具] 之 javac

官网-javac

1. 简述

javac工具及其选项来读取Java类和接口定义,并将它们编译为字节码和类文件。该javac命令还可以处理Java源文件和类中的注释。

2. 命令

用法: javac <options> <source files>

其中, options 可能的选项包括:
  -g                         生成所有调试信息
  -g:none                    不生成任何调试信息
  -g:{lines,vars,source}     只生成某些调试信息
  -nowarn                    不生成任何警告
  -verbose                   输出有关编译器正在执行的操作的消息
  -deprecation               输出使用已过时的 API 的源位置
  -classpath <路径>            指定查找用户类文件和注释处理程序的位置
  -cp <路径>                   指定查找用户类文件和注释处理程序的位置
  -sourcepath <路径>           指定查找输入源文件的位置
  -bootclasspath <路径>        覆盖引导类文件的位置
  -extdirs <目录>              覆盖所安装扩展的位置
  -endorseddirs <目录>         覆盖签名的标准路径的位置
  -proc:{none,only}          控制是否执行注释处理和/或编译。
  -processor <class1>[,<class2>,<class3>...] 要运行的注释处理程序的名称; 绕过默认的搜索进程
  -processorpath <路径>        指定查找注释处理程序的位置
  -parameters                生成元数据以用于方法参数的反射
  -d <目录>                    指定放置生成的类文件的位置
  -s <目录>                    指定放置生成的源文件的位置
  -h <目录>                    指定放置生成的本机标头文件的位置
  -implicit:{none,class}     指定是否为隐式引用文件生成类文件
  -encoding <编码>             指定源文件使用的字符编码
  -source <发行版>              提供与指定发行版的源兼容性
  -target <发行版>              生成特定 VM 版本的类文件
  -profile <配置文件>            请确保使用的 API 在指定的配置文件中可用
  -version                   版本信息
  -help                      输出标准选项的提要
  -A关键字[=值]                  传递给注释处理程序的选项
  -X                         输出非标准选项的提要
  -J<标记>                     直接将 <标记> 传递给运行时系统
  -Werror                    出现警告时终止编译
  @<文件名>                     从文件读取选项和文件名
  
sourcefiles:

要编译(例如MyClass.java)或处理注释(例如MyPackage.MyClass)的一个或多个源文件。
复制代码

3. 编译的文件传给javac的方法

  • 对于少量源文件,您可以在命令行上列出文件名。
  • 对于大量源文件,可以使用命令行上的选项包含列出源文件名的文件

源代码文件名必须具有.java后缀,类文件名必须具有.class后缀,源文件和类文件都必须具有标识该类的根名称。例如,一个被调用的类MyClass将被写入一个被调用的源文件中,MyClass.java并被编译成一个名为的字节码类文件MyClass.class。

内部类定义生成其他类文件。这些类文件具有组合内部和外部类名称的名称,eg: MyClass$MyInnerClass.class。

默认情况下,编译器将每个类文件放在与其源文件相同的目录中。您可以使用该-d选项指定单独的目标目录。

4. JDK9新特性

JDK_JAVAC_OPTIONS在JDK 9中引入了一个启动器环境变量,它将其内容添加到命令行中javac。

所述的内容JDK_JAVAC_OPTIONS的环境变量,由白色空间()或空白字符分隔(\n,\t,\r,或\f)被预置到传递到命令行参数javac作为参数的列表。

环境变量的编码要求javac与系统上的命令行相同。JDK_JAVAC_OPTIONS环境变量内容的处理方式与命令行中指定的方式相同。

单引号(')或双引号(")可用于包含包含空格字符的参数。通过简单地删除引号对来保留开放引用和第一个匹配的关闭引用之间的所有内容。如果找不到匹配的引号,启动器将中止并显示错误消息。支持,因为它们在命令行中指定。但是,如同不支持使用通配符一样。 @files@files

引用包含空格的参数的示例:

export JDK_JAVAC_OPTIONS='@"C:\white spaces\argfile"'
复制代码
export JDK_JAVAC_OPTIONS='"@C:\white spaces\argfile"'
复制代码
export JDK_JAVAC_OPTIONS='@C:\"white spaces"\argfile'
复制代码

转载于:https://juejin.im/post/5cf1e6fe6fb9a07ee27afd2b

相关文章:

  • 睡眠与养生
  • 在Docker中部署Confluence和jira-software
  • 一对一社交交友源码APP开发必不可少的四大核心功能
  • cache介绍
  • Java并发编程的艺术(七)——Java中的锁(2)
  • Django 之 orm操作
  • 单链表的逆转
  • 坑爹的 Java 可变参数,把我整得够惨。。
  • day25-2 random,os,sys模块
  • 文件传输协议介绍
  • 前端开发者必备的 Nginx 知识
  • WebSocket Client连接AspNetCore SignalR Json Hub
  • 精读vue-hooks
  • 扩展SpringMVC以支持更精准的数据绑定1
  • 如何安装部署秋色园QBlog站点
  • 深入了解以太坊
  • 【附node操作实例】redis简明入门系列—字符串类型
  • 30秒的PHP代码片段(1)数组 - Array
  • AngularJS指令开发(1)——参数详解
  • C++类的相互关联
  • js正则,这点儿就够用了
  • leetcode46 Permutation 排列组合
  • Odoo domain写法及运用
  • Swift 中的尾递归和蹦床
  • weex踩坑之旅第一弹 ~ 搭建具有入口文件的weex脚手架
  • 构造函数(constructor)与原型链(prototype)关系
  • 精益 React 学习指南 (Lean React)- 1.5 React 与 DOM
  • 算法---两个栈实现一个队列
  • 为视图添加丝滑的水波纹
  • 译米田引理
  • MPAndroidChart 教程:Y轴 YAxis
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • ​secrets --- 生成管理密码的安全随机数​
  • ​软考-高级-信息系统项目管理师教程 第四版【第19章-配置与变更管理-思维导图】​
  • # .NET Framework中使用命名管道进行进程间通信
  • #mysql 8.0 踩坑日记
  • #我与Java虚拟机的故事#连载03:面试过的百度,滴滴,快手都问了这些问题
  • $(function(){})与(function($){....})(jQuery)的区别
  • $refs 、$nextTic、动态组件、name的使用
  • (06)Hive——正则表达式
  • (145)光线追踪距离场柔和阴影
  • (NO.00004)iOS实现打砖块游戏(十二):伸缩自如,我是如意金箍棒(上)!
  • (附源码)ssm户外用品商城 毕业设计 112346
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (三)c52学习之旅-点亮LED灯
  • (三)mysql_MYSQL(三)
  • (循环依赖问题)学习spring的第九天
  • .helper勒索病毒的最新威胁:如何恢复您的数据?
  • .net core webapi Startup 注入ConfigurePrimaryHttpMessageHandler
  • .Net Web项目创建比较不错的参考文章
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • /var/lib/dpkg/lock 锁定问题
  • @Autowired注解的实现原理
  • [1127]图形打印 sdutOJ