[英]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.