gpt4 book ai didi

java - 构建任务和 sourceCompatibility = 1.7、gradle 5.3 的问题

转载 作者:行者123 更新时间:2023-12-02 09:56:05 24 4
gpt4 key购买 nike

我在gradle.properties中使用sourceCompatibility = 1.7,Gradle JVM(设置,Gradle,Intellij IDEA)是1.8.0_171并且

wrapper {
gradleVersion = '5.3'
distributionType = 'ALL'
}

在 build.gradle 中。

当我运行构建任务(任务->构建->构建 Intellij IDEA)时,我在compileJava任务期间收到“错误:不兼容的类型:推断的类型不符合等式约束”。

如果我将 Gradle JVM 设置为 1.7.0_80 并且

wrapper {
gradleVersion = '4.3'
distributionType = 'ALL'
}

构建很好。

我做错了什么?如何使用 gradle 5.3 构建 JAVA 7 项目?

最佳答案

这可能是由 Java 7 和 Java 8 之间泛型类型检查规则的细微变化引起的,如 Why does this program compile with Java 7 but not Java 8? 中所述。

那么解决办法是什么?

我怀疑你会找到一个神奇的编译器开关或其他东西来让它工作。实际上,我认为您的选择是:

  1. 您可以像开始时一样在 Java 7 平台上进行编译。但这不是一个好的长期解决方案。

  2. 如果这是受支持的产品,请提出支持请求。

  3. 如果这是开源产品,请检查该产品的问题检查器,看看是否有人已经报告了该问题。他们可能也报告了修复。

  4. 查看您尝试编译的源代码,找出编译错误的原因并修复它。如果这是开源产品,请将您的修复作为补丁提交。

请注意,这些编译错误可能会报告潜在的错误,在某些情况下可能会导致意外的运行时异常。

<小时/>

你说:

I thought sourceCompatibility = 1.7 will set up java 7 for compile *.java.

确实如此。然而,兼容性是有一定程度的。

当您使用 -source 1.7 运行 Java 8 编译器时,您实际上只是关闭了对新语言功能的支持。在底层,编译器仍然是 Java 8 编译器。如果(例如)类型检查器发生了细微的变化,那么 Java 工程师可能没有为旧行为实现向后兼容模式。

(额外的模式可能会使本来就很复杂的软件变得难以维护。类型检查和类型推断是编译器实现中较困难的方面之一。)

关于java - 构建任务和 sourceCompatibility = 1.7、gradle 5.3 的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56002539/

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