- Learn Kotlin Programming(Second Edition)
- Stephen Samuel Stefan Bocutiu
- 228字
- 2021-06-24 14:13:23
Kotlin runtime
When we compiled Hello World! and produced the JAR, we instructed the compiler to bundle in the Kotlin runtime. Why is the runtime needed? Take a closer look at the following bytecode that was generated, if you haven't already done so. To be more specific, look at line 3. It invokes a method to validate the fact that the args variable is not null; therefore, if you compile the code without asking for the runtime to be bundled in, and then try to run it, you will get an exception:
$ kotlinc HelloWorld.kt -d HelloWorld.jar $ java -jar HelloWorld.jar Exception in thread "main" java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics at HelloWorldKt.main(HelloWorld.kt) Caused by: java.lang.ClassNotFoundException: kotlin.jvm.internal.Intrinsics
The runtime footprint is very small; at approximately 800 K, you can't argue otherwise. Kotlin comes with its own standard class library (Kotlin runtime), which is different from the Java library. As a result, you need to merge it into the resulting JAR, or provide it in the classpath, as follows:
$ java -cp $KOTLIN_HOME/lib/kotlin-runtime.jar:HelloWorld.jar HelloWorldKt
If you develop a library for the exclusive use of other Kotlin libraries or applications, then you don't have to include the runtime. Alternatively, there is a shorter path that involves passing a flag to the Kotlin compiler, as follows:
$ kotlinc -include-runtime HelloWorld.kt -d HelloWorld
The preceding code will include the runtime when assembling the final JAR file.
- Flask Web全棧開發實戰
- iOS Game Programming Cookbook
- Learning Python Web Penetration Testing
- TensorFlow Lite移動端深度學習
- Boost C++ Application Development Cookbook(Second Edition)
- PySide GUI Application Development(Second Edition)
- Python:Master the Art of Design Patterns
- WebRTC技術詳解:從0到1構建多人視頻會議系統
- Linux:Embedded Development
- Extending Puppet(Second Edition)
- jQuery炫酷應用實例集錦
- Mastering Git
- OpenCV 3.0 Computer Vision with Java
- Jakarta EE Cookbook
- Learning jqPlot