gpt4 book ai didi

java - 为什么 Ant 编译的 Java 源代码的目标 Java 版本具有未定义的方法

转载 作者:行者123 更新时间:2023-11-30 02:14:14 27 4
gpt4 key购买 nike

我在 Ant 中有以下 javac 任务。我的系统环境Java版本是Java 8。

<javac destdir="${destination}" deprecation="on" source="1.6" target="1.6" compiler="modern" verbose="true">

在Java源代码中,我使用了需要Java 8的方法。如果我将系统环境中的Java版本设置为Java 7,那么Ant会抛出错误并且不会编译代码。

尽管源字段和目标字段设置为 1.6,但为什么当我的 Java 版本为 8 时它仍能编译?

当我运行仅在 Java 8 中可用的方法时,我收到一个 NoSuchMethodError,这是预期的。

最佳答案

可以编译更高版本f.ex的代码。 1.8 具有兼容性或目标版本较低的版本,例如 1.6。这会将代码转换为与相应版本兼容的字节代码。这样做的原因是能够生产与替代 java 版本兼容的工件。

这是一个内置的java函数,与ant无关。这是等效的 java 编译器指令:

javac -源 1.7 -目标 1.5 MyTest.java

-source 定义了需要能够编译源代码的最低 Java 版本。满足使用Java 1.8时的条件。当使用 Java 7 时,再次满足条件,因此尝试编译,但最终由于 Java 8 功能的使用而失败。

如果您使用的是 Java 1.6,那么编译器将立即失败,而不会尝试执行编译。

关于java - 为什么 Ant 编译的 Java 源代码的目标 Java 版本具有未定义的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49099455/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com