Java 11可以直接執行原始碼

banq發表於2019-01-24

從JDK 10開始,java可以在命令列啟動的三種方式:執行帶有public static void main(String args)方法的類;執行JAR檔案的main類,或啟動模組的main類。
從Java 11開始,增加一個新的第四種模式:啟動在原始檔中宣告的類:

java HelloWorld.java

上面一行可以直接執行啟動Java原始碼檔案,等同於:

javac -d <memory> HelloWorld.java
java -cp <memory> helloWorld



在這種直接執行原始檔模式下,執行過程如下:
  • 在原始檔中找到要執行的類是第一個頂級類。它必須包含標準public static void main(String)方法的宣告 。
  • 已編譯的類由自定義類載入器載入,該載入器委託給應用程式類載入器。(這意味著出現在應用程式類路徑上的類不能引用原始檔中宣告的任何類。)
  • 已編譯的類在未命名的模組的上下文中執行,似乎是--add-modules=ALL-DEFAULT是有效的(除了--add-module可能已在命令列上指定的任何其他 選項。)
  • 出現在命令列上的檔名後面的任何引數都以main明顯的方式傳遞給標準方法。
  • 如果應用程式類路徑上有一個類,其名稱與要執行的類的名稱相同,則會出錯。


相關文章