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

相关推荐
Kapaseker1 天前
别再只用 Loading、Success、Error 表示所有页面状态了
android·kotlin
雨白2 天前
深入理解 Kotlin 协程 (九):互通有无,解构 Channel 缓冲策略与底层无锁机制
android·kotlin
蜡台3 天前
Android WebView 设计指南
android·java·kotlin
Kapaseker3 天前
深入理解 Compose 副作用
kotlin
雨白4 天前
深入理解 Kotlin 协程 (八):拾遗补阙,探秘官方框架的调度细节与取消闭环
android·kotlin
GitLqr4 天前
别被“Flutter 传感器延迟 150ms”带偏了:这可能只是你的实现方式错了
flutter·架构·kotlin
我命由我123454 天前
Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件
android·java·开发语言·java-ee·kotlin·android-studio·android runtime
Coffeeee4 天前
谷歌的一个优化建议,让我重新学了一遍Android里面如何正确处理位图
android·google·kotlin
Android打工仔6 天前
Continuation 到底是谁创建的?
android·kotlin
Android-Flutter6 天前
android fragment 使用
android·kotlin