【问题标题】:NoClassDefFoundError exception when calling Java code from Kotlin从 Kotlin 调用 Java 代码时出现 NoClassDefFoundError 异常
【发布时间】:2021-05-11 03:49:11
【问题描述】:

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

package text;

public class StringUtils {

    public static void filter(boolean flag) {
        System.out.println("Flag is " + flag);
    }
}

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

val exists = true;
StringUtils.filter(exists)

我在 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
  • Kotlin 编译器:1.4.30
  • IDE:Intellij 2020.3.2
  • JDK:15.0.1

【问题讨论】:

  • 我试过你的代码,它工作正常。确保将 java 类放在 Java 文件夹中,而不是 Kotlin 文件夹中。
  • 谢谢。在我将 TextUtils 移动到 src/main/java 文件夹后,代码运行正常。但我猜如果我将 Java 类放入 src/main/kotlin 文件夹并尝试在 Kotlin 代码中使用它,Intellij 应该会显示错误/警告
  • 您可以将构建系统配置为在同一目录中查找 java 和 Kolton 文件。我想这就是 IDE 没有将其显示为错误的原因。
  • 是的,IDEA 应该发出警告,请关注youtrack.jetbrains.com/issue/KTIJ-1233 以获取有关此内容的更新。

标签: java kotlin intellij-idea


【解决方案1】:

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

只需右键单击 main -> new -> directory -> 选择 java(或键入它)。

【讨论】:

  • 你是救生员。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多