摘要:等同于真正無提示反饋。等同于詳細反饋。等同于標記直接將標記傳遞到運行時系統。為每個遠程標記或標記參數使用一個標記將標記傳遞到編譯器。
為什么要用jshell
在IDE中創建一個項目來研究和學習框架太重量級了, 我需要一個輕量的解決方案. 調用一個方法, 它可以馬上在終端中打印返回值的內容.
Jshell 是一個(REPL)交互式解釋器, 一般作為學習如何使用類的練習場, 方法. 可以立即看到輸出結果, 而不需要創建一個重量級的Java項目來學習如何調用類的方法.
因為我有潔癖, 我喜歡保持工程目錄干凈整潔, 我不喜歡在我正式的項目中去練習如何使用框架的代碼.
JShell 是JDK9的一個新功能. 我們如何把它和Maven結合起來了.原理很簡單, 那就是CLASSPATH.
jshell 有一個 --class-path 參數可以指定 jar 包的位置, 因此, 我們需要知道Maven項目中所有依賴
? / jshell -h 用法: jshell <選項> <加載文件> 其中, 可能的選項包括: --class-path <路徑> 指定查找用戶類文件的位置 --module-path <路徑> 指定查找應用程序模塊的位置 --add-modules <模塊>(,<模塊>)* 指定要解析的模塊; 如果 <模塊> 為 ALL-MODULE-PATH, 則為模塊路徑中的所有模塊 --startup <文件> 對啟動定義執行單次替換 --no-startup 不運行啟動定義 --feedback <模式> 指定初始反饋模式。該模式可以是 預定義的 (silent, concise, normal 或 verbose), 也可是以前用戶定義的 -q 無提示反饋。等同于: --feedback concise -s 真正無提示反饋。等同于: --feedback silent -v 詳細反饋。等同于: --feedback verbose -J<標記> 直接將 <標記> 傳遞到運行時系統。 為每個運行時標記或標記參數使用一個 -J -R<標記> 將 <標記> 傳遞到遠程運行時系統。 為每個遠程標記或標記參數使用一個 -R -C<標記> 將 <標記> 傳遞到編譯器。 為每個編譯器標記或標記參數使用一個 -C --version 輸出版本信息并退出 --show-version 輸出版本信息并繼續 --help 輸出標準選項的此提要并退出 --help-extra, -X 輸出非標準選項的幫助并退出如何知道Maven項目中的CLASSPATH呢?
這樣玩!
mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=classpath.txt
CLASSPATH 就輸出到 classpath.txt 文件中了.
然后通過這個文件來向jshell說明CLASSPATH. 這樣我們就可以把jshell和maven項目集成到一起了.
下面是一個完整的腳本. 一般放在Maven項目的根目錄下:
#!/bin/bash if [ ! -d "target" ]; then echo "Please run it under a module directory. And make sure it"s not parent module directory. And make a maven install first" exit fi mvn dependency:build-classpath -DincludeTypes=jar -Dmdep.outputFile=classpath.txt jshell --class-path `cat classpath.txt`:target/classes "$@"
保存到Maven項目的根目錄, 名稱為 jshell.sh
最后sh> ./jshell.sh
來玩一個 SpringBoot 的 UriComponentsBuilder的例子
jshell> import org.springframework.web.util.* jshell> UriComponentsBuilder b = UriComponentsBuilder.newInstance() b ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.scheme("https") $6 ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.host("segmentfault.com") $7 ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.build() $8 ==> https://segmentfault.com jshell> b.pathSegment("u") $9 ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.build() $10 ==> https://segmentfault.com/u jshell> b.pathSegment("developerworks") $11 ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.build() $12 ==> https://segmentfault.com/u/developerworks jshell> b.queryParam("hello", "developerworks") $13 ==> org.springframework.web.util.UriComponentsBuilder@544a2ea6 jshell> b.build() $14 ==> https://segmentfault.com/u/developerworks?hello=developerworks
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/69096.html
摘要:新特性概述系列一安裝及使用系列二運行系列三模塊系統精要系列四更新系列五系列六系列七系列八系列九與的區別遷移注意事項參數遷移相關選項解析使用構建實例使用示例帶你提前了解中的新特性 Java語言特性系列 Java5的新特性 Java6的新特性 Java7的新特性 Java8的新特性 Java9的新特性 Java10的新特性 Java11的新特性 Java12的新特性 Java13的新特性...
摘要:什么是項目是第一個官方的的縮寫,即交互式編程環境,是一種命令行工具。它允許你無需編寫類或者方法來執行語句。它與的解釋器或其它本地支持的語言,如和類似。在即將到來的的特性中,這絕對是更有趣的特性之一。 什么是JShell? JShell/Kulla項目是第一個官方的Java REPL (Read-Eval-Print-Loop的縮寫,即交互式編程環境),是一種命令行工具。它允許你無需編寫...
摘要:概述是一個主要版本的發布這里介紹的是對的特性和增強的實現是的增強提案,包括增強建議和路線圖流程規范請求,描述了針對平臺的建議和最終規范主要變更統一模塊化標準這是全新的編程組件模塊,是可命名的可自描述的代碼和數據集合。 概述 java9是一個主要版本的發布 這里介紹的是Oracle對JDK9的特性和增強的實現 JEP是JDK的增強提案,包括增強建議和路線圖流程 JSR(Java規范請...
摘要:在語言上并沒有添加太多的新特性,但在使用性能上做了很改進。二多版本包支持即在不同版本下,執行相應版本的代碼。在發布新版本的后,用戶可能不會升級到新環境,但是項目可能會開始逐步升級到新版本,來提前適應即將到來的環境。 Java9在語言上并沒有添加太多的新特性,但在使用、性能上做了很改進。 一、模塊間引用 Java9添加了模塊化的概念,使得之前的控制訪問權限有了改變。 之前: publ...
摘要:序本文介紹下下面的版本安裝使用。下載官網地址安裝路徑下載襲來是個文件,雙擊安裝,默認裝到了這里,的地址是看下版本歡迎使用版本要大致了解該版本請鍵入有了就可以快速做一些驗證,比如查看導入的類庫方法定義及調用已創建方法已修改方法查看歷史 序 本文介紹下mac下面的java9版本安裝使用。 下載 官網地址http://www.oracle.com/technet... 安裝路徑 下載襲來是個...
閱讀 3640·2023-04-26 02:07
閱讀 3150·2021-09-22 15:55
閱讀 2534·2021-07-26 23:38
閱讀 3119·2019-08-29 15:16
閱讀 2008·2019-08-29 11:16
閱讀 1746·2019-08-29 11:00
閱讀 3583·2019-08-26 18:36
閱讀 3165·2019-08-26 13:32