1
私はScalaコードをコールするKotlinの概念証明を作成しようとしています。両方の言語をコンパイルする次にScala&Kotlinの手動JARコンパイル
kotlin-src/
hello.kt
scala-src/
Hello.scala
:ここ
は、プロジェクトは、現時点では次のようになりますMETA-INF/
main.kotlin_module
HelloKt.class
HelloScala.class
:ルートディレクトリに以下のファイルが生成さ
kotlinc kotlin-src/*.kt
scalac scala-src/*.scala
私はJARに変身しようとしました:
jar cvfM run.jar *.class META-INF
しかし、実行されません(私は主なクラスを指定していないためだと思います)。
$ java -jar run.jar
Error: Invalid or corrupt jarfile run.jar
だから、私は次のマニフェストを作成しました:
Main-Class: HelloKt
jarファイルをコンパイルする前に、このファイルはMETA-INF
ディレクトリにコピーされますと、以下のように結果のjarファイルの構造は次のとおりです。
HelloKt.class
HelloScala.class
META-INF/
META-INF/main.kotlin_module
META-INF/MANIFEST.MF
新しいJARは実行されますが、実行時例外では常に失敗します。
$ java -jar run.jar
Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics
at HelloKt.main(hello.kt)
Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
... 1 more
Kotlinクラスでメインメソッドをコンパイルして実行するために必要な残りの手順は何ですか?
Scala/Kotlinコードにバンドルする必要があるランタイムクラスはありますか?
エラーsuggを実行しているときSTDLIBは、javaコマンドのクラスパスパラメータにSTDLIBジャーとディレクトリを追加します。あなたはあなたのクラスパスにkotlin stdlibを持っていない – s1m0nw1