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目录下,而且相互访问是没问题的。

相关推荐
阿pin3 小时前
Android随笔-kotlin Flow
android·kotlin·flow
松仔log3 小时前
JetPack——Hilt
android·java·开发语言·kotlin
XiaoLeisj3 小时前
Kotlin Flow 常用操作符:数据变换 map、filter、onEach,时间控制 debounce、sample,终端聚合 reduce、fold
android·kotlin·android jetpack·协程·响应式编程·flow
Kapaseker4 小时前
小白都看得懂的 Skill 教程 - 创建第一个 Skill
android·kotlin·vibecoding
zhangphil5 小时前
Android BitmapFactory实现AOSP ContentResolver.loadThumbnail快速取小缩略图,Kotlin
android·kotlin
Android-Flutter5 小时前
android 生命周期管理,继承Activity,不是AppCompatActivity
android·kotlin
XiaoLeisj1 天前
Kotlin Flow:冷流收集、并行订阅、emit 推送、delay 延迟、collect 全量收集与 collectLatest 的实时数据处理
android·kotlin·android jetpack·协程·flow
Android-Flutter1 天前
android jetpack 详解
android·kotlin
Enaium2 天前
我实现了KMP的SDL绑定并编写了高性能软光追
前端·kotlin
Android打工仔2 天前
Continuation 的链式关系 —— 一个 suspend 函数如何把结果交还给调用者?
android·kotlin