Почему неразрешенная ссылка на попытку доступа к постоянным значениям?

Приложение определяет константы в одном объекте Kotlin:

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

Затем они используются в другом классе:

 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 и даже поместить значения const в корневой файл без объекта, но ни один из них не позволяет построить.

Почему класс не может ссылаться на константу, особенно когда IDE решительно предлагает ее разрешить?

Solutions Collecting From Web of "Почему неразрешенная ссылка на попытку доступа к постоянным значениям?"

И это решение … чтобы убедиться, что все исходные файлы Kotlin имеют расширение .kt-файла! В этом случае файл APIConstants назывался «APIConstants», а не «APIConstants.kt», что означает, что среда IDE смогла разрешить ссылки на основе содержимого файла, но инструменты сборки не смогли. Смутно Android Studio показала иконку Kotlin K в имени файла, несмотря на отсутствие расширения .kt.