gpt4 book ai didi

java - gradle没有java方法的签名(hashmap.getOrDefault)适用

转载 作者:行者123 更新时间:2023-11-30 06:37:51 26 4
gpt4 key购买 nike

这发生在我尝试使用 Gradle 构建时。由于字符串是对象,因此似乎没有理由发生此错误:

No signature of method: java.util.HashMap.getOrDefault() is applicable for argument types: (java.lang.String, java.lang.String) values: [profile, development]
Possible solutions: getOrDefault(java.lang.Object, java.lang.Object)

代码:

apply plugin: 'java'
apply plugin: 'war'
apply plugin: 'eclipse'
apply plugin: 'jacoco'

sourceCompatibility = '1.8'
targetCompatibility = '1.8'

def DEFAULT_PROFILE = 'development'
def profile = project.getProperties().getOrDefault("profile", DEFAULT_PROFILE)
def config = new ConfigSlurper(profile).parse(file("profiles.gradle").toURL())

注意,对于在 Eclipse 中创建的项目,我使用 Intellij Idea 而不是 Eclipse 作为 IDE。这也是我第一次使用 Gradle,所以可能是一些初学者的错误。

最佳答案

我不知道为什么会发生这种情况,除了 String 类扩展的 Object 类来自与 Object 不同的类加载器> 参数中使用的 HashMap 类。使用类似的东西,您还可以生成诸如 could not cast java.lang.String to java.lang.String 之类的消息,因为从不同的类加载器加载的同一类不是相同的类,但关于instanceof检查的不同。

如果您提供 MCVE 或整个实际项目,也许可以弥补正在发生的事情。

实际上你可以使用更 Groovy 的风格:

project.findProperty("profile") ?: DEFAULT_PROFILE

关于java - gradle没有java方法的签名(hashmap.getOrDefault)适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44910938/

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