kotlin项目无法访问Java类的问题

使用IntelliJ创建一个Kotlin项目,然后在src/main/kotlin中创建一个java接口:Animal.java,然后在Main.kt中打印这个java接口,如下:

kotlin 复制代码
fun main() {
    println(Animal::class.java)
}

代码在编辑器中并没有报错,但是运行main函数时报错,异常如下:

kotlin 复制代码
Exception in thread "main" java.lang.NoClassDefFoundError: Animal
	at MainKt.main(Main.kt)
	at MainKt.main(Main.kt)
Caused by: java.lang.ClassNotFoundException: Animal
	at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:827)
	at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:188)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:1112)
	... 2 more

解决方法很简单,把Animal.java放到src/main/java目录中即可,如下图所示:

简单总结就是java的类要放到src/main/java目录,kotlin的类要放到src/main/kotlin的目录。

另外,在src/test/kotlin中的kotlin的测试类如果要访问java类,这个java类也必须是放在src/main/java中的才可以访问到,如果放在src/main/kotlin中则访问不到。

另外需要提醒一下,与Android开发不同,AndroidStudio项目中,kotlinjava的类可以同时放在src/main/java目录下,而且相互访问是没问题的。

相关推荐
android_cai_niao13 小时前
快速删除集合中的元素
kotlin·removeif
雨白13 小时前
深入理解 Kotlin 协程 (七):画地为营,解构协程作用域与父子羁绊
kotlin
唐青枫16 小时前
Kotlin Lambda 表达式详解:从基础语法到实战封装
kotlin
帅次17 小时前
Jetpack Compose 动画实战:animateFloatAsState、AnimatedVisibility 与 graphicsLayer 避坑
android·kotlin·gradle·android jetpack
Kapaseker21 小时前
学吧!Android 全新的嵌入式照片选择器
android·kotlin
Carson带你学Android2 天前
告别复杂的 Gradle 配置!JetBrains Amper 0.10 发布:用 YAML 构建 Kotlin/Android 项目
kotlin·gradle
Meteors.2 天前
Kotlin代码优化
开发语言·kotlin
疏狂难除2 天前
JetBrains IDE插件开发教程(三)——plugin.xml与命令
ide·kotlin·intellij-idea
Refrain_zc3 天前
Android高含金量实战:音频文本 HTML 标签解析 + 段落分组 + 自定义圆角 SpanUI 渲染
kotlin