2015-12-07 13 views
11

Sto cercando di convertire il mio codice Java di HomePage.class in Kotlin. Seguo le istruzioni Kotlin.org:Kotlin Foo :: class.java "Riferimento non risolto: Java" errore

getClass()

To retrieve the type information from an object, we use the javaClass extension property.

val fooClass = foo.javaClass

Instead of Java’s Foo.class use Foo::class.java .

val fooClass = Foo::class.java

ho una chiamata HomePage classe che estende AppCompatActivity (in Android). Sto usando Android Studio. Ho provato a fare HomePage::class.java e ha un errore: Unresolved reference: java

enter image description here

Come faccio ad avere questo lavoro?

risposta

10

Il problema è più probabile che si è dimenticato di dipendere dal reflection libraries che sono stati necessari per le funzioni riflettenti Kotlin.

On the Java platform, the runtime component required for using the reflection features is distributed as a separate JAR file (kotlin-reflect.jar). This is done to reduce the required size of the runtime library for applications that do not use reflection features. If you do use reflection, please make sure that the .jar file is added to the classpath of your project.

Source

8

Si scopre che stavo usando una versione precedente di Kotlin e non è stato configurato correttamente. Ho modificato il file gradle per includere l'ultima versione beta e ho selezionato l'opzione che configura Kotlin e ora funziona.

In Gradle:

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

dependencies { 
    compile fileTree(dir: 'libs', include: ['*.jar']) 
    compile "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" 
} 
+0

Per me non ha aiutato la beta, ma aggiungendo tutte le tue dipendenze – Kostya

0

ho copiato la classe da altro progetto e si è dimenticato di cambiare il nome del pacchetto di classe. quando ho cambiato, è fissato

1

I Put all'inizio del Gradle (Modulo app)

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

e

implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version" 

nelle dipendenze sezione

Nel build.gradle (Progetto)

buildscript { 
    ext.kotlin_version = '1.2.0' 
    repositories { 
     jcenter() 
     google() 
    } 
    dependencies { 
     classpath 'com.android.tools.build:gradle:3.0.1' 
     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 
    } 
} 
Problemi correlati