我正在尝试将HomePage.class
的Java代码转换为Kotlin。我按照Kotlin.org上的说明进行操作:
的getClass()
要从对象中检索类型信息,我们使用javaClass 扩展属性。
val fooClass = foo.javaClass
而不是Java的
Foo.class
使用Foo::class.java
。
val fooClass = Foo::class.java
我有一个名为HomePage的类,它扩展了AppCompatActivity(在Android中)。我正在使用Android Studio。我尝试HomePage::class.java
,但却出错:Unresolved reference: java
如何让它发挥作用?
答案 0 :(得分:16)
问题很可能是你忘了依赖Kotlin的反射功能所需的reflection libraries。
在Java平台上,使用所需的运行时组件 反射功能作为单独的JAR文件分发 (科特林-reflect.jar)。这样做是为了减少所需的尺寸 不使用反射功能的应用程序的运行时库。 如果您使用反射,请确保添加.jar文件 到项目的类路径。
答案 1 :(得分:14)
事实证明,我使用的是较旧版本的Kotlin,但配置不正确。我编辑了gradle文件以包含最新的beta版本,并选择了配置Kotlin的选项,现在它可以正常工作。
在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"
}
答案 2 :(得分:9)
我放入Gradle(模块应用程序)的开头
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-android-extensions'
和
implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"
或
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
在依赖项部分
在build.gradle(Project)
中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
}
}
答案 3 :(得分:1)
为便于参考,以下是使用 Gradle :
时的反射依赖关系 build.gradle
dependencies {
compile "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
compile "org.jetbrains.kotlin:kotlin-reflect"
testCompile "org.jetbrains.kotlin:kotlin-test"
testCompile "org.jetbrains.kotlin:kotlin-test-junit"
}
build.gradle.kts
dependencies {
compile(kotlin("stdlib"))
compile(kotlin("reflect"))
compile(kotlin("test"))
compile(kotlin("test-junit"))
}
答案 4 :(得分:0)
我从其他项目复制了该类,忘了更改类包名称。 当我改变时,它修复了
答案 5 :(得分:0)
我在带有Kotlin 1.2.71的AndroidStudio中看到了这一点,但以上内容都没有为我解决。
可悲的是对我来说很有趣的是关闭了该项目,告诉AndroidStudio忘记该项目,然后从文件夹中重新打开。 Presto,没有未解决的参考。很奇怪,我知道。
答案 6 :(得分:0)
就我而言,减少Kotlin的版本已解决了该问题
更改
ext.kotlin_version = '1.3.21'
收件人
ext.kotlin_version = '1.3.11'
答案 7 :(得分:0)
将此行添加到模块构建gradle中
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
在Project build gradle中:
buildscript {
ext.kotlin_version = '1.3.21'
repositories {
google()
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:3.3.2'
classpath 'com.google.gms:google-services:4.2.0'
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
}
}
答案 8 :(得分:0)
我用过
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:$kotlin_version"
代替
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
答案 9 :(得分:0)
我用这个
实现“ org.jetbrains.kotlin:kotlin-stdlib-jdk8:$ kotlin_version”
无效的缓存并重新启动android studio!可以正常运行!
答案 10 :(得分:0)
我在下载并运行 android studio canary(北极狐)时遇到了这个错误。从那以后,我的 android studio(普通工作室)出现了这个错误,我应用了上面给出的所有解决方案,但没有任何效果。所以我完全卸载了android studio并重新安装了最新的(这是唯一的选择)