Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/312.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
javac中-source的使用_Java - Fatal编程技术网

javac中-source的使用

javac中-source的使用,java,Java,从 -source release指定接受的源代码版本 如果我有一个JDK版本,比如说1.8,我提到-source=1.6,这意味着什么?这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译 如果是这样,为什么在javac命令期间传递-source=1.6?因为这将生成.class文件,因此没有留下源代码来将源代码兼容性标记为1.6或更高版本?在javac命令之后,我们得到的只是字节码和no.java文件。Java8引入了lambda表达式。如果使用-source=1.

-source release指定接受的源代码版本

如果我有一个JDK版本,比如说1.8,我提到-source=1.6,这意味着什么?这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译


如果是这样,为什么在javac命令期间传递-source=1.6?因为这将生成.class文件,因此没有留下源代码来将源代码兼容性标记为1.6或更高版本?在javac命令之后,我们得到的只是字节码和no.java文件。

Java8引入了lambda表达式。如果使用-source=1.6编译应用程序,编译器将不允许lambda表达式,尽管JDK8支持它。

Java8引入了lambda表达式。如果使用-source=1.6编译应用程序,编译器将不允许lambda表达式,尽管JDK8支持它

这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译

没有

-source=1.6选项意味着您的代码只能使用作为Java 6和Java语言早期版本一部分的Java语言构造

例如,任何Java8lambdas或Java9var声明都将标记为编译错误

这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译

没有

-source=1.6选项意味着您的代码只能使用作为Java 6和Java语言早期版本一部分的Java语言构造

例如,任何Java8lambdas或Java9var声明都将标记为编译错误

如果我有一个JDK版本,比如说1.8,我提到-source=1.6,这意味着什么?这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译

如果您的代码使用Java8特性,它甚至不会使用-source=1.6进行编译。否则,不一定正确,但一般来说,是的,它应该与Java6和更高版本一起工作

如果是这样,为什么在javac命令期间传递-source=1.6?因为这将生成.class文件,因此没有留下源代码来将源代码兼容性标记为1.6或更高版本?在javac命令之后,我们得到的只是字节码和no.java文件

Javac是Java编译器。当然,它将生成.class文件,因为这是java程序的编译形式。你为什么要通过考试?假设您希望针对特定版本,这是将支持保持在该级别的最简单方法

您可以通过使用Java8特性lambdas、streams、datetimeformatter来测试这一点,然后尝试编译。您的编译将失败

如果我有一个JDK版本,比如说1.8,我提到-source=1.6,这意味着什么?这是否仅仅意味着我编写的任何代码都可以由JDK1.6或更高版本的javac编译

如果您的代码使用Java8特性,它甚至不会使用-source=1.6进行编译。否则,不一定正确,但一般来说,是的,它应该与Java6和更高版本一起工作

如果是这样,为什么在javac命令期间传递-source=1.6?因为这将生成.class文件,因此没有留下源代码来将源代码兼容性标记为1.6或更高版本?在javac命令之后,我们得到的只是字节码和no.java文件

Javac是Java编译器。当然,它将生成.class文件,因为这是java程序的编译形式。你为什么要通过考试?假设您希望针对特定版本,这是将支持保持在该级别的最简单方法

您可以通过使用Java8特性lambdas、streams、datetimeformatter来测试这一点,然后尝试编译。编译将失败。

通过在编译器上指定源参数,您告诉编译器您希望提交的源代码符合该版本的Java,并检查所选版本的特定语言功能默认值通常是最新版本,即使您自己没有指定源版本。文档明确了哪些值是可接受的,哪些值是默认值。这不会更改您的源代码或将代码转换为旧版本,它只会在您使用Java更高版本中的功能时发出警告。如果您没有使用java语言的更新特性,那么这将像往常一样编译代码并生成类文件

javac MyProgram.java -source 1.6
上面的命令将告诉编译器将源代码视为与Java 1.6版兼容

下面是JDK 1.8的允许值和文档中的描述

1.3 The compiler does not support assertions, generics, or other language features introduced after Java SE 1.3.

1.4 The compiler accepts code containing assertions, which were introduced in Java SE 1.4.

1.5 The compiler accepts code containing generics and other language features introduced in Java SE 5.

5 Synonym for 1.5.

1.6 No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors instead of warnings as in earlier releases of Java Platform, Standard Edition.

6 Synonym for 1.6.

1.7 The compiler accepts code with features introduced in Java SE 7.

7 Synonym for 1.7.

1.8 This is the default value. The compiler accepts code with features introduced in Java SE 8.

8 Synonym for 1.8.
通过在编译器上指定source参数,您告诉编译器您希望提交的源代码符合该版本的Java,并检查所选版本的特定语言功能默认值通常是最新版本,即使您没有指定 你自己的源代码版本。文档明确了哪些值是可接受的,哪些值是默认值。这不会更改您的源代码或将代码转换为旧版本,它只会在您使用Java更高版本中的功能时发出警告。如果您没有使用java语言的更新特性,那么这将像往常一样编译代码并生成类文件

javac MyProgram.java -source 1.6
上面的命令将告诉编译器将源代码视为与Java 1.6版兼容

下面是JDK 1.8的允许值和文档中的描述

1.3 The compiler does not support assertions, generics, or other language features introduced after Java SE 1.3.

1.4 The compiler accepts code containing assertions, which were introduced in Java SE 1.4.

1.5 The compiler accepts code containing generics and other language features introduced in Java SE 5.

5 Synonym for 1.5.

1.6 No language changes were introduced in Java SE 6. However, encoding errors in source files are now reported as errors instead of warnings as in earlier releases of Java Platform, Standard Edition.

6 Synonym for 1.6.

1.7 The compiler accepts code with features introduced in Java SE 7.

7 Synonym for 1.7.

1.8 This is the default value. The compiler accepts code with features introduced in Java SE 8.

8 Synonym for 1.8.

所以,我提到-source=1.6,那么为什么人们提到-target高于source的1.8呢?目标1.6应该足够了,应该在JDK1.8上运行,如果他们想要的话?这是另一个问题。但在我试图解释人们为什么这么说之前,我需要在上下文中看到这一点。我见过一些这样的例子。所以,我提到-source=1.6,那么为什么人们提到-target高于source,比如1.8?目标1.6应该足够了,应该在JDK1.8上运行,如果他们想要的话?这是另一个问题。但在我试图解释人们为什么这么说之前,我需要从上下文中去理解这一点。我见过一些这样的例子。