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

相关推荐
前行的小黑炭16 小时前
Android :为APK注入“脂肪”,论Android垃圾代码在安全加固中的作用
android·kotlin
tangweiguo0305198717 小时前
Android Kotlin 动态注册 Broadcast 的完整封装方案
android·kotlin
前行的小黑炭18 小时前
Android 不同构建模式下使用不同类的例子:如何在debug模式和release模式,让其使用不同的类呢?
android·kotlin·gradle
Android-Flutter20 小时前
kotlin - 2个Fragment实现左右显示,左边列表,右边详情,平板横、竖屏切换
android·kotlin
木头左1 天前
结合机器学习的Backtrader跨市场交易策略研究
人工智能·机器学习·kotlin
前行的小黑炭2 天前
Android Flow的其他使用:stateIn和冷流(普通Flow)
android·kotlin
前行的小黑炭2 天前
Android Flow:你真的了解?在工作当中的运用~~通过光照例子来解释一下..
android·kotlin
张可3 天前
Kotlin 函数式编程思想
android·前端·kotlin
alexhilton3 天前
Android ViewModel数据加载:基于Flow架构的最佳实践
android·kotlin·android jetpack
初始化4 天前
Android 页面代码粒度化管理进阶
android·kotlin