Как заставить Java-компилятор Android Studio распознавать класс Kotlin? - PullRequest
0 голосов
/ 06 сентября 2018

Я добавил файл Kotlin, содержащий три класса, в проект Android Studio, изначально написанный на Java. Файл прекрасно компилируется в Android Studio, и проект собирается, пока я не попытаюсь заставить класс Java взаимодействовать с классом Kotlin. Android Studio выдаёт мне следующую ошибку:

Java compiler:
   [path]/[project]
      app/src/main/java
         [project].jav
            error: cannot find symbol class Quiz_abTime

Когда я добавил файл, Android Studio пожаловалась на конфигурацию gradle, но я запустил конфигурацию, и она говорит, что все модули, использующие Kotlin, настроены.

Обратите внимание, что я уже пытался сделать недействительным кеш и перезапустить Android Studio, так что это не проблема.

Вот мои build.gradle файлы. Модуль первый:

// Top-level build file where you can add configuration options common to all sub-projects/modules.

buildscript {
    ext.kotlin_version = '1.2.61'
    repositories {
        jcenter()
        google()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.1.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"

        // NOTE: Do not place your application dependencies here; they belong
        // in the individual module build.gradle files
    }
}

allprojects {
    repositories {
        jcenter()
        maven {
            url "https://maven.google.com"
        }
    }
}

Теперь приложение build.gradle:

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'

android {
    compileSdkVersion 26

    defaultConfig {
        applicationId [application name deleted for SO]
        minSdkVersion 16
        targetSdkVersion 26
        versionCode 6
        versionName "2.0.5"
        vectorDrawables.useSupportLibrary = true
    }
    buildTypes {
        release {
            minifyEnabled false
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
}

dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'com.android.support:support-v4:26.1.0'
    implementation 'com.android.support:support-vector-drawable:26.1.0'
    implementation 'com.android.support:appcompat-v7:26.1.0' // where X.X.X version
    implementation 'com.github.yukuku:ambilwarna:2.0.1'
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
}
repositories {
    mavenCentral()
}

Вот еще одна проблема, которую я включаю только потому, что она может быть связана. В моем основном приложении у меня есть следующее:

import android.support.v7.app.ActionBar;

Любопытно, что ActionBar выделен красным, и это говорит Cannot resolve symbol ActionBar`. Есть несколько других выделенных как это; это началось после того, как Android Studio запросила обновление. Тем не менее, по крайней мере, это строит; сборка завершается неудачно, только когда я пытаюсь получить доступ к классу Kotlin из класса Java.

Я делал Kotlin с Java раньше в Android Studio, и это не было проблемой, но может ли кто-нибудь сказать мне, где искать проблемы, которые мешают компилятору Java видеть класс Kotlin?

1 Ответ

0 голосов
/ 06 сентября 2018

В этом случае оказывается, что Android Studio не добавляла в файл Kotlin важную строку:

package [packagename]

В тот момент, когда я добавил это, он скомпилировался и прекрасно работал. Я думал, что это то, что AS будет делать автоматически, но, очевидно, нет - или, по крайней мере, в этом случае, по любой причине. Проблемы с другими символами, которые он не может найти, по-видимому, не связаны.

...