【发布时间】: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