1
스콧 코드를 호출하는 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
항아리를 컴파일하기 전에,이 파일은 META-INF
디렉토리에 복사됩니다 다음과 같이 결과 단지의 구조는 다음과 같습니다
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 클래스에서 main 메서드를 컴파일하고 실행하는 데 필요한 나머지 단계는 무엇입니까?
이 작업을 수행하기 위해 스칼라/코 틀린 코드와 함께 번들로 제공해야하는 런타임 클래스가 있습니까?
오류 sugg을 실행할 때 다음 stdlib는 자바 명령의 클래스 경로 매개 변수에 다음 stdlib 항아리 디렉토리를 추가 당신은 당신의 classpath에 kotlin stdlib을 가지고 있지 않은 것입니다. – s1m0nw1