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

相关推荐
ai2work9 小时前
ch06 Jetpack Compose 入门:状态驱动 UI
kotlin
JMchen1 天前
第 12 篇|项目整合与打包发布 —— 从 Demo 到可安装 APK 的完整收官指南
kotlin·android studio
Android打工仔1 天前
不要在 Data 层随意把 Cold Flow 转换成 Hot Flow
android·架构·kotlin
杉氧1 天前
拒绝重复造轮子:我写了一个生产级的 Kotlin 协程与 Flow 工具库(CoroutineKit)
android·kotlin·workflow
JMchen2 天前
第 9 篇|网络请求基础 —— 从 HttpURLConnection 到 OkHttp
kotlin·android studio
hai_android3 天前
Kotlin Flow combine 源码剖析:一个 Channel 如何优雅合并多条流
android·java·kotlin
敲代码的瓦龙3 天前
Jetpack?ViewModel!!!
android·开发语言·kotlin·android-studio
swithun3 天前
不用 WebView,我用 Kotlin + Compose Multiplatform 重写 Mermaid,并做了 2048 组对拍
android·开源·kotlin
JMchen3 天前
第 8 篇|本地存储技术选型 —— SP 与文件读写
kotlin·android studio
码农哈丁4 天前
从 JVM 到 Cargo:把整个 Kotlin 项目移植到 Rust 的踩坑实录
jvm·rust·kotlin