私はJavaプロジェクトに取り組んでいます。このプロジェクトでは、私はKotlinで初めて試しました。私はIntellij Ideaで提供されているJavaToKoltinコンバータを使って、いくつかのクラスをKotlinに変換し始めました。とりわけ私のカスタム例外は今ではKotlinに変換されています。しかし、これで例外処理は正しく機能しません。
Javaコード内にカスタム例外(など)を投げた場合、例外はキャッチされません(下記のコードを参照)。Gradleプロジェクト:java.lang.NoClassDefFoundError:kotlin/jvm/internal/Intrinsics
// 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 ...
}
}
}
だから誰も私の説明に例外がないのです。 MyCustomKotlinException
はKotlins RuntimeException
から継承しています。これはjava.lang.RuntimeException
のエイリアスです。
// MyCustomKotlinException.kt
package foo
class MyCustomKotlinException(err: String) : RuntimeException(err)
更新:
私は2行(インスタンスの作成と投げ)にスロー部分を分割し、問題が投げていないことがわかりました。 tryブロックは、インスタンスの作成後に残されます。このKotlinクラスのインスタンス作成で何か問題はありますか?
アップデート2:
私はThrowable
で二catchブロックを追加し、次のThrowableがキャッチされます。
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
...
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
Update3と:
はエラーと(下記お答え参照)ジャーにすべてのプロジェクトファイルを追加することで、固定の問題を修正するために、タイトルを変更しました。 Kotlinランタイムライブラリをgradleに追加することはできません。
たとえば、そのkotlinソースコードなどの完全な[mcve]を入力してください。 – GhostCat
@GhostCatはこれで十分ですか? – FreshD
人々が問題を再現できるほど十分である必要があります。今のように見える。 – GhostCat