2017-06-23 93 views
0

我想從O'Reilly視頻複製hello世界程序 - Kotlin編程簡介(Kotlin應用程序的結構)。無法運行hello world應用程序,如O'Reilly所示 - Kotlin編程簡介

這是程序(Main.kt):以 「kotlinc Main.kt」

的視頻編

package com.hadihariri.kotlincourse 
fun main(args: Array<String>) 
{ 
    println("Hello World!") 
} 

顯示了這種方式來運行它:

java -cp .:<path to kotlin runtime>/kotlin-runtime.jar com.hadihariri.kotlincourse.MainKt 

這對我來說是:

java -cp .:~/.sdkman/candidates/kotlin/current/lib/kotlin-runtime.jar com.hadihariri.kotlincourse.MainKt 

運行時不會在該位置存在:

ls -al ~/.sdkman/candidates/kotlin/current/lib/kotlin-runtime.jar 
-rw-r--r-- 1 user user 879182 Jun 8 18:23 /home/user/.sdkman/candidates/kotlin/current/lib/kotlin-runtime.jar 

不過,我讓你得到同樣的錯誤,而不在類路徑指定的運行時間:

java -cp .:~/.sdkman/candidates/kotlin/current/lib/kotlin-runtime.jar com.hadihariri.kotlincourse.MainKt 
Exception in thread "main" 
java.lang.NoClassDefFoundError: kotlin/jvm/internal/Intrinsics 
    at com.hadihariri.kotlincourse.MainKt.main(Main.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 

回答

3

的問題是,顯然,Java類路徑處理器不會擴展〜(代字號)字符。當我用實際的目錄路徑替換它時,程序運行。使用$ HOME代替〜也有效。最後,如果〜(代字符)字符位於類路徑的前面,它將起作用。顯然,外殼只在前面擴展它:

java -cp ~/.sdkman/candidates/kotlin/current/lib/kotlin-runtime.jar:. com.hadihariri.kotlincourse.MainKt 
+0

是的,你自己找出:) – suhao399

相關問題