gpt4 book ai didi

java - 在 Idea 中构建 Kotlin 项目时出现 UnsupportedOperationException

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

当我尝试构建 Kotlin 项目时,我得到以下信息 error在想法中:

Error:Kotlin: [Internal Error] org.jetbrains.kotlin.util.KotlinFrontEndException: Exception while analyzing expression at (60,19) in E:/altruix-is/src/main/kotlin/com/mycompany/myproduct/capsulecrm/CapsuleCrmSubsystem.kt:
client.execute(req)

[...]

Caused by: java.lang.UnsupportedOperationException: doSubstitute with no original should not be called for synthetic extension
at org.jetbrains.kotlin.synthetic.SamAdapterFunctionsScope$MyFunctionDescriptor.doSubstitute(SamAdapterFunctionsScope.kt:165)
at org.jetbrains.kotlin.descriptors.impl.FunctionDescriptorImpl$CopyConfiguration.build(FunctionDescriptorImpl.java:553)
at org.jetbrains.kotlin.load.java.ErasedOverridabilityCondition.isOverridable(ErasedOverridabilityCondition.kt:47)

该错误似乎发生在调用中

res = client.execute(req)

其中 client 是 Apache HttpClient。

Screenshot

可以找到发生这种情况的源文件 here .

我向 JetBrains 提交了错误报告,但我需要进一步研究该项目,因此需要解决问题。请注意,直到昨天一切都运行良好。昨天我将 Kotlin 插件升级到了最新版本,也许这就是问题所在。

如何避免上述错误?

更新 1(2017 年 3 月 3 日 14:46 MSK):

这不起作用:

open fun addNote(note: String, compId: Long): ValidationResult {
val client = httpClient
if (client == null) {
return ValidationResult(false, "Internal error")
}

var res: CloseableHttpResponse? = null
var req: HttpUriRequest?
try {
req = composeAddNoteRequest(note, compId)
res = client.execute(req)
if (res.statusLine.statusCode != 201) {
logger.error("addNote(note='$note', compId=$compId): Wrong status code ${res.statusLine.statusCode}")
return ValidationResult(false, "Wrong status code (CRM interaction)")
}
return ValidationResult(true, "")
}
catch (throwable: Throwable) {
logger.error("addNote(note='$note', compId=$compId)", throwable)
return ValidationResult(false, "Database error")
} finally {
close(res)
}
return ValidationResult(false, "Internal logic error")
}

这有效(区别在于从顶部开始的第二行):

open fun addNote(note: String, compId: Long): ValidationResult {
val client = httpClient as CloseableHttpClient // Change
if (client == null) {
return ValidationResult(false, "Internal error")
}

var res: CloseableHttpResponse? = null
var req: HttpUriRequest?
try {
req = composeAddNoteRequest(note, compId)
res = client.execute(req)
if (res.statusLine.statusCode != 201) {
logger.error("addNote(note='$note', compId=$compId): Wrong status code ${res.statusLine.statusCode}")
return ValidationResult(false, "Wrong status code (CRM interaction)")
}
return ValidationResult(true, "")
}
catch (throwable: Throwable) {
logger.error("addNote(note='$note', compId=$compId)", throwable)
return ValidationResult(false, "Database error")
} finally {
close(res)
}
return ValidationResult(false, "Internal logic error")
}

最佳答案

在上面的示例中,client.execute(req) 返回 HttpResponse,它不是 CloseableHttpResponse 的子类型。因此,类型不匹配错误是正确的。您应该在此处使用 CloseableHttpClient,或者将 client.execute(req) 转换为 CloseableHttpResponse

我无法从您的示例中重现 KotlinFrontEndException。从提供的堆栈跟踪中,我可以推断出“SAM 适配器”发生了错误 - 也就是说,当您在接受单个抽象方法 (SAM) 接口(interface)的 Java 方法调用中使用 Kotlin lambda 时。如果问题仍然出现,请在此处提交错误:http://kotl.in/issue

关于java - 在 Idea 中构建 Kotlin 项目时出现 UnsupportedOperationException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42571812/

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