IDEA kotlin 引用java类中的方法时出现java.lang.NoClassDefFoundError的解决方法

前言

在学习kotlin 和 java 互操作的过程中,出现了java.lang.NoClassDefFoundError的错误,但是代码是没有问题的。百思不得其解,最后发现了是 gradle设置的问题。

示例代码

1
2
3
4
5
6
7
fun main(args: Array<String>) {
val test = Demo()
println(test.hello())

val s = test.determinateFriendLevel()
println(s?.uppercase())
}
1
2
3
4
5
6
7
8
9
10
11
12
import org.jetbrains.annotations.Nullable;

public class Demo {
public String hello() {
return "hello";
}

@Nullable
public String determinateFriendLevel() {
return null;
}
}

这两段代码是没有问题的。但是在运行的时候,死活报java.lang.NoClassDefFoundError的错误。

原因

使用 Gradle 创建的kotlin项目,java目录和kotlin目录默认是分开的。在调用java的代码的时候,gradle回去src/main/java目录下寻找。我一直都是把java、kotlin代码都放在src/main/kotlin中的。

解决方法

src->main 右击,添加directory。添加java目录

image-20220106180819815 image-20220106180854582