自Kotlin 1.0.0以来,Java代码无法访问Kotlin的软件包

时间:2016-02-17 07:29:25

标签: java android android-studio kotlin

我在我的gradle项目中使用Kotlin和Java。但是自从我将Kotlin(和kotlin-gradle-pludin)更新到1.0.0之后,奇怪的事情就开始发生了。有一个使用Kotlin对象的Java类:

import com.myapp.android.entities.CategoryEntity;
import com.myapp.android.entities.CommentEntity;


public class Contract {

    private static final Class[] MODEL_CLASSES = new Class[]{
        CommentEntity.class,
        CategoryEntity.class
    };

}

CategoryEntity和CommentEntity是用Kotlin编写的。此代码编译并运行良好,直到1.0.0,但现在我收到以下错误:

  

错误:(3,1)错误:包com.myapp.android.entities不存在

     

错误:(19,13)错误:找不到符号类CommentEntity

     

错误:(20,13)错误:找不到符号类CategoryEntity

更新后代码没有被修改,有趣的是 - Android Studio静态分析器威胁这段代码是有效的,但不是编译器。

我很奇怪 - 如果我在Kotlin 1.0.0的发行说明中遗漏了任何内容,或者它是编译器中的错误?

P.S。我试图将实体放在与Contract类相同的包中,但“找不到符号类”错误没有消失。

这是我的app模块的build.gradle的一部分

buildscript {
    ext.kotlin_version = '1.0.0'
    repositories {
        jcenter()
        mavenCentral()
        <...>
    }
    dependencies {
        classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version"
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        <...>
    }
}

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

<...>

repositories {
    jcenter()
    mavenCentral()
    <...>
}

dependencies {
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version"
    compile 'com.android.support:appcompat-v7:23.1.1'
    compile 'com.android.support:recyclerview-v7:23.1.1'
    compile 'com.android.support:cardview-v7:21.0.+'
    <...>
}

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.2"

    dexOptions {
        javaMaxHeapSize "2g"
    }

    <...>

    defaultConfig {
        applicationId "com.myapp.android"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 4
        versionName "0.0.4"
    }

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_7
        targetCompatibility JavaVersion.VERSION_1_7
    }
    buildTypes {
        <...>
        debug {
            minifyEnabled false
        }
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
        }
    }
    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    packagingOptions {
        exclude 'META-INF/LICENSE.txt'
        exclude 'META-INF/NOTICE.txt'
    }
}

解决方案:

正如Doug Stevenson指出的那样 - 应该有

apply plugin: 'kotlin-android'
build.gradle中的

。看起来我不小心用

替换了它
apply plugin: 'kotlin-android-extensions'

而不是添加新的。现在,当我返回kotlin-android插件行时,一切运行良好。

0 个答案:

没有答案