从 Kotlin 调用 Java 代码时出现 NoClassDefFoundError 异常

Ser*_*gey 6 java intellij-idea kotlin

我在其中创建了一个 Kotlin 项目和 Java 类:

package text;

public class StringUtils {

    public static void filter(boolean flag) {
        System.out.println("Flag is " + flag);
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我尝试从 Kotlin 代码中调用过滤器方法:

val exists = true;
StringUtils.filter(exists)
Run Code Online (Sandbox Code Playgroud)

我在 Intellij IDE 中没有看到任何错误,但在运行时出现异常:

Exception in thread "main" java.lang.NoClassDefFoundError: text/StringUtils
    at Person.printName(Person.kt:66)
    at PersonKt.main(Person.kt:103)
    at PersonKt.main(Person.kt)
Caused by: java.lang.ClassNotFoundException: text.StringUtils
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(BuiltinClassLoader.java:606)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(ClassLoaders.java:168)
    at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:522)
    ... 3 more
Run Code Online (Sandbox Code Playgroud)
  • Kotlin 编译器:1.4.30
  • IDE:Intellij 2020.3.2
  • JDK:15.0.1

小智 23

您必须将所有 Java 类放在src/main/java下,而不是src/main/kotlin下。

只需右键单击主 -> 新建 -> 目录 -> 选择 java(或键入它)。

  • 你是一个救星。 (3认同)