[英]Maven compiler source and target
我搜索了所有答案,以了解为什么我们的来源应与目标不同,但非在召集:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.0</version>
<configuration>
<source>1.7</source>
<target>1.8</target>
</configuration>
</plugin>
如果JDK向后兼容,为什么在1.7上完成编译时我需要将目标设置为1.8?
将源设置为高于目标将不起作用,例如以下错误:
源版本8需要目标版本1.8
同样来自Maven:
仅设置目标选项不能保证您的代码实际在具有指定版本的JRE上运行。 陷阱是意外使用仅在以后的JRE中存在的API,这会使您的代码在运行时由于链接错误而失败
谁能举个例子? maven源代码和目标代码是我自己的源代码,而不是依赖项,那么在以后的JRE(以我自己的代码)中可以成功使用API的情况是什么?
通常,将目标JVM设置为与源JVM匹配,否则。 如果未设置目标JVM,则Java编译器的版本会将其设置为该JVM版本,例如,如果您使用Java 10进行构建,则除非您将目标JVM指定为目标Java文件,否则目标类文件将仅在Java 10下运行。降低。
我想如果您的企业针对的是目标JVM(例如Java 8 b / c或出于安全和/或性能方面的原因)高于您希望源Java兼容的目标JVM(例如Java 7),那么您可以将目标版本设置为高于源版本。 也许您可以将该代码库“共享”给可能仍然针对Java 7 JVM的其他人。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.