kotlin项目无法访问Java类的问题
使用IntelliJ
创建一个Kotlin
项目,然后在src/main/kotlin
中创建一个java
接口:Animal.java
,然后在Main.kt
中打印这个java
接口,如下:
fun main() {
println(Animal::class.java)
}
代码在编辑器中并没有报错,但是运行main
函数时报错,异常如下:
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
项目中,kotlin
和java
的类可以同时放在src/main/java
目录下,而且相互访问是没问题的。