JDK 11:轻松取出单文件Java源代码程序
JDK 11 Early Access Builds包含與JEP 330相關的預覽功能(“啟動單個文件源代碼程序”)。
我之前在“ Shebang即將來到Java? ”和“ 為JDK 11提議的JEP 329和JEP 330 ”,由于JDK 11 Early Access Builds,在這篇文章中,我將介紹此功能。
對于此演示,我正在使用最新的(截至撰寫本文時) OpenJDK JDK 11 Early Access Build 24 。
使用-help標志( java -help )時,可以看到此JDK發行版包含對JEP 330的支持的最早跡象之一:
如上圖所示,“幫助”以“ usage”語句開頭,而usage語句中的最后一個示例描述了如何使用Java啟動器( java )運行單文件源代碼程序。 具體來說,輸出顯示以下“用法”,此處突出顯示了本文的主題用法:
Usage: java [options] <mainclass> [args...](to execute a class)or java [options] -jar <jarfile> [args...](to execute a jar file)or java [options] -m <module>[/<mainclass>] [args...]java [options] --module <module>[/<mainclass>] [args...](to execute the main class in a module)or java [options] <sourcefile> [args](to execute a single source-file program)為了演示此功能,我將使用一個非常簡單的示例(略微),該示例改編自OpenJDK jdk-dev郵件列表上2018年5月24日的Mario Torre帖子中提供的示例。
helloYou.jv
#!/bin/java public class Hello {public static void main(final String[] args){final String name = System.console().readLine("\nPlease enter your name: ");System.console().printf("Hello, %s!%n", name);} }我已經將此文件helloYou.jv 。 請注意,它不以常規Java源代碼文件結尾的.java擴展名結尾,并且我沒有將文件名與類名匹配。 實際上,我以小寫字母開頭文件的名稱!
當我嘗試直接使用OpenJDK 11 EA-24運行此文件時,我看到一個錯誤(“找不到或加載主類helloYou.jv”):
發生此錯誤的原因是,此早期訪問版本中的JEP 330支持是“預覽”功能。 以下屏幕快照展示了當我將標志--source=11和--enable-preview傳遞給Java啟動器時,它可以工作。
我在我的文章“ Shebang即將來到Java? ”,聽起來好像不允許JEP 330支持使用的單文件源程序以.java擴展名結尾(該擴展.java保留用于傳統Java源文件)。 在下一個屏幕快照中似乎是這種情況,在該快照中,我嘗試針對與上面相同的代碼運行此功能,但現在文件名為helloYou. java helloYou. java 。
最后一個圖像說明我們無法使用shebang運行.java文件,因為它們被視為常規Java文件,因此必須符合常規Java源代碼文件的規范。
使用此早期訪問版本,如果我注釋掉shebang行,則可以運行單個源代碼文件helloYou.java (即使具有.java擴展名,也沒有--enable-preview標志)。
如果我嘗試使用OpenJDK JDK 10進行最后的操作,嘗試運行如上所示的Java源代碼文件,將產生前面討論的錯誤消息:“錯誤:找不到或加載主類helloYou.java”。
這篇文章是對預覽功能單文件源代碼程序的初步了解,該功能現在在JDK 11 Early Access Builds中可用。
翻譯自: https://www.javacodegeeks.com/2018/08/jdk-11-single-file-source-code.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的JDK 11:轻松取出单文件Java源代码程序的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 挫折是什么意思 挫折意思是什么
- 下一篇: java运行时间间隔_Java:安排作业