为什么试图访问常量值的问题没有解决?

该应用程序在Kotlin单例对象中定义常量:

@file:JvmName("APIConstants") package com.myapp.api object APIConstants { const val HTTP_RESPONSE_CODE_NOT_AUTHORIZED = 401 etc.... } 

然后他们被用于另一个class级:

 import com.myapp.api.APIConstants.HTTP_RESPONSE_CODE_NOT_AUTHORIZED etc ... class API { private fun returnBadResponse(response: Response, callback: ApiAuthListener) { if (response.code() == HTTP_RESPONSE_CODE_NOT_AUTHORIZED) { callback.onBadAuthToken() } else { callback.onFailure(response.message(), getServerError(response)) } } 

在这个类中,Android Studio(3.0 beta)提供了一个为常量添加导入的提示,并没有给出任何问题的指示(没有红色下划线等,方法中的常量引用以紫色斜体文本显示它已经解决了)但是当我建立这个项目时,我得到了这个:

 Error: Unresolved reference: HTTP_RESPONSE_CODE_NOT_AUTHORIZED 

我已经尝试清除IDE缓存并重新启动它,并做一个干净的构建,这没有什么区别。 我已经尝试删除@JvmName注释,甚至将常量值放在没有包含对象的文件的根目录中,但是不允许构建。

为什么类没有引用这个常量,特别是当IDE强烈建议它可以解决这个问题的时候呢?

解决方案是…确保所有Kotlin源文件都具有.kt文件扩展名! 在这种情况下,APIConstants文件被称为“APIConstants”而不是“APIConstants.kt”,这似乎意味着IDE能够根据文件的内容来解析引用,但构建工具不能。 令人混淆的是,Android Studio在文件名上显示了Kotlin K图标,尽管缺少.kt扩展名。