Gradle Project: java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
2022-08-31 16:56:02
我正在开发一个Java项目,在这个项目中,我第一次尝试使用Kotlin。我开始使用Intellij Idea中提供的JavaToKoltin转换器将一些类转换为Kotlin。其中,我的自定义例外现在已转换为 Kotlin。但是,这样异常处理就不再正常工作了。
如果我在java代码中抛出一个自定义异常(例如),则不会捕获异常(请参阅下面的代码)。MyCustomKotlinException.kt
// Example.java
package foo
import java.util.*;
import java.lang.*;
import java.io.*;
import foo.MyCustomKotlinException;
class Example
{
public static void main (String[] args)
{
try {
// Do some stuff
// if Error
MyCustomKotlinException e = new MyCustomKotlinException("Error Message");
throw e;
} catch (MyCustomKotlinException e) { // <-- THIS PART IS NEVER REACHED
// Handle Exception
} catch (Throwable e) {
e.printStackTrace(); <-- This is catched
} finally {
// Finally ...
}
}
}
所以任何人都可以向我解释为什么例外不是捕获。 继承自 Kotlins ,它只是 的别名。MyCustomKotlinException
RuntimeException
java.lang.RuntimeException
// MyCustomKotlinException.kt
package foo
class MyCustomKotlinException(err: String) : RuntimeException(err)
更新:
我将 throw 部分拆分为 2 行(实例创建和抛出),发现问题不在于抛出。try 块在实例创建后保留。我创建这个 Kotlin 类的实例有什么问题吗?
更新2:
我添加了第二个捕获块,并且捕获了以下Shrewable。Throwable
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
...
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
Update3:
更改了标题以更正错误,并修复了将所有项目文件添加到jar的问题(请参阅下面的答案)。将 Kotlin 运行时库添加到 gradle 对我不起作用。