sourceCompatibility
和之间有什么关系/区别targetCompatibility
?当它们被设置为不同的值时会发生什么?
根据Gradle文档:
sourceCompatibility
是"编译Java源时使用的Java版本兼容性".
targetCompatibility
是"为Java生成类的Java版本."
我的理解是,targetCompatibility
将生成与特定版本的Java兼容的java字节码,这是一个功能的子集sourceCompatibility
吗?
小智 55
使用这些时要小心; 我们被人们做出假设所困扰.
仅仅因为您使用1.5的sourceCompability(或targetCompatibility)并不意味着您始终可以使用JDK 1.6编译代码并期望它在JDK 1.5下工作.问题是可用的库.
如果您的代码恰好调用了一些仅在JDK 1.6中可用的方法,它仍将使用目标VM的各种兼容性选项进行编译.但是当你运行它时,它会失败,因为不存在违规方法(你会得到一个MethodNotFoundException或ClassNotFoundException).
出于这个原因,我总是将兼容性设置与我正在构建的实际Java版本进行比较.如果它们不匹配,我会失败.
小智 31
sourceCompatibility =指定用于编译.java文件的Java编程语言版本.例如sourceCompatibility 1.6 =指定使用Java编程语言的1.6版来编译.java文件.
默认情况下,sourceCompatibility ="当前正在使用的JVM的版本"和targetCompatibility = sourceCompatibility
targetCompatibility =该选项确保生成的类文件与targetCompatibility指定的VM兼容.请注意,在大多数情况下,-target选项的值是-source选项的值; 在这种情况下,您可以省略-target选项.
类文件将在targetCompatibility和更高版本指定的目标上运行,但不会在早期版本的VM上运行
归档时间: |
|
查看次数: |
69859 次 |
最近记录: |