| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> Java知识库 -> Javac选项source和target的作用 -> 正文阅读 |
|
[Java知识库]Javac选项source和target的作用 |
一 .Javac编译器语法格式:
options 选项,也就是我们编译时使用的参数,例如我们常用的选项-encoding指定字符编码、-classpath指定类加载路径。 source和target是编译器的参数,我们平时并不常用到。 1、source 选项参考官方文档
如何理解指定可接受的源文件版本呢? 在可以设置的release部分,有这样一句描述:
我觉得最重要的是要理解“accept”一词,查看词典
Java各个发布版本的语言特性(features),如下图所示(详细信息可参考【Java语言特性】):
说专业一点就是,提供与指定发行版的源兼容性。 在Windows的命令行窗口下,运行命令:
例如,以下Java代码使用了Java SE 8的语言特性lambda表达式,我使用编译时指定-source 7
编译结果: 二、target选项参考官方文档
生成特定VM(虚拟机)版本的类文件。 默认值和JDK版本一致。 例如,我的JDK版本是1.8,我的程序没有使用Java SE 8的语言特性(假如使用了Java SE 7的特性),我们公司的系统使用的是JDK 7的虚拟机,我希望编译后的Class文件可以在JDK 7的虚拟机上运行,这是我编译文件时需要指定参数-target 7,当然根据虚拟机的兼容性,在高于target指定版本的虚拟机上都可以运行该Class文件。 Class文件是有版本的,有主版本号和次版本号,例如45.1,主版本号45,次版本号1 JDK 1.1的虚拟机可以运行的Class文件版本45.0~45.65535 Class文件的版本等于JDK版本 减去 1 再加上45。因为JDK1.1的Class文件版本是45.0; 注意,即使我只使用了Java SE 7的语言特性,但是我使用JDK 1.8的编译器, 没有指定target参数(相当于使用了默认值-target 1.8),导致我编译的Class文件的主版本为52,然而JDK 1.7的虚拟机最大只能支持主版本号51的Class文件。 代码如下:
使用JDK 1.8的编译器进行编译,查看编译的Class文件的主版本号: 使用JDK 1.7的虚拟机运行该Class文件,发生错误。 这两个参数我们平时并不经常用到,因为它主要用户交叉编译,就是说我们的项目由很多个模块组成,开发使用的JDK版本可能并不一致,还要考虑Class文件运行的虚拟机的问题,所以各个模块的source和target可能并不相同。 我们平时学习时,为了出现不必要的错误,将source和target配置为和JDK版本一致即可。 二、应用以为JDK 1.8为例 1.Mavenpom.xml文件
2. IDEA全局配置 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 4:55:17- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |