2017-05-30 137 views
0

我在Kotlin嘗試了一個簡單的Hello World程序。無法在終端運行Kotlin程序

fun main(args: Array<String>) { 
println("HelloWorld!") 
} 

但是,當我試圖編譯它在終端,

kotlinc HelloWorld.kt -include-runtime -d HelloWorld.jar 

我得到以下。

Exception in thread "main" java.lang.UnsupportedClassVersionError: org/jetbrains/kotlin/preloading/Preloader : Unsupported major.minor version 52.0 
at java.lang.ClassLoader.defineClass1(Native Method) 
at java.lang.ClassLoader.defineClass(ClassLoader.java:803) 
at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 
at java.net.URLClassLoader.defineClass(URLClassLoader.java:449) 
at java.net.URLClassLoader.access$100(URLClassLoader.java:71) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:361) 
at java.net.URLClassLoader$1.run(URLClassLoader.java:355) 
at java.security.AccessController.doPrivileged(Native Method) 
at java.net.URLClassLoader.findClass(URLClassLoader.java:354) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:425) 
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) 
at java.lang.ClassLoader.loadClass(ClassLoader.java:358) 
at sun.launcher.LauncherHelper.checkAndLoadMain(LauncherHelper.java:482) 
+1

您使用的JDK與用於編譯jar的版本之間存在版本不匹配。確保JAVA_HOME等於你認爲它應該。 – meatspace

+1

你用什麼JDK版本來運行它? –

+0

@ɐuıɥɔɐɯ它是開放的JDK 1.7.0_101 – Sriram

回答

0

Kotlin編譯器要求Java 8運行編譯過程。您仍然可以根據需要定位Java 6字節碼或Java 8字節碼,但在編譯期間必須使用Java 8或更新的JDK。這是在Kotlin 1.1.2 release announcement中宣佈的。

在 「遷移說明」:

的科特林編譯器現在需要JDK 8運行。您不應該注意到任何更改,因爲大多數其他Java開發工具(如Gradle和Android工具鏈)也需要JDK 8,所以您幾乎可以確定已安裝它。對於編譯器生成的代碼,Java 1.6的兼容性仍然是默認的,我們沒有計劃放棄對生成Java 1.6兼容字節碼的支持。

+0

感謝您的信息:-) – Sriram