/* čĊ Ġ* ĠCopyright Ġ 2 0 2 0 Ġthe Ġoriginal Ġauthor Ġor Ġauthors . čĊ Ġ* Ġ< p > čĊ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); čĊ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . čĊ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat čĊ Ġ* Ġ< p > čĊ Ġ* Ġhttps :// www . apache . org / licenses / LICENSE - 2 . 0 čĊ Ġ* Ġ< p > čĊ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware čĊ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , čĊ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . čĊ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand čĊ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . čĊ Ġ*/ č Ċ package Ġorg . open rewrite . java čĊč Ċ import Ġjava . io . File č Ċ import Ġjava . net . URL č Ċ import Ġjava . util . zip . Zip InputStream č Ċ import Ġjava . util . zip . Zip OutputStream čĊč Ċ object ĠDownload Tools Jar Ġ{ čĊĠĠĠ Ġ@ Jvm Static čĊĠĠĠ Ġfun Ġmain ( args : ĠArray < String >) Ġ{ čĊĠĠĠĠĠĠĠ Ġmin ify ( tools Jar ()) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġtools Jar (): ĠFile Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġtools Jar Ġ= ĠFile (". tools / tools . jar ") čĊĠĠĠĠĠĠĠ Ġif Ġ(! tools Jar . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġtools Jar . parent File . mkdir s () čĊčĊĠĠĠĠĠĠĠĠĠĠĠ ĠURL (" https :// github . com / A dopt OpenJDK / openjdk 8 - binaries / releases / download / jdk 8 u 2 5 2 - b 0 9 . 1 / OpenJDK 8 U - jdk _ x 6 4 _ windows _ hot spot _ 8 u 2 5 2 b 0 9 . zip ") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. open Connection () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. getInputStream () čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. use Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZip InputStream ( it ). use Ġ{ Ġz is Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġze Ġ= Ġz is . next Entry Ġ?: Ġbreak čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ze . name . endsWith (" tools . jar ")) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Writing Ġtools . jar ...") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtools Jar . write Bytes ( z is . read All Bytes ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġprintln (" Done !") čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġbreak čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġreturn Ġtools Jar čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġfun Ġmin ify ( tools Jar : ĠFile ): ĠFile Ġ{ čĊĠĠĠĠĠĠĠ Ġval Ġmin ified Ġ= ĠFile (". tools / tools - min ified . jar ") čĊĠĠĠĠĠĠĠ Ġif (! min ified . exists ()) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġmin ified . output Stream (). use Ġ{ Ġmin ified File Out Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZip OutputStream ( min ified File Out ). use Ġ{ Ġmin ified Out Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtools Jar . inputStream (). use Ġ{ Ġtools File In Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠZip InputStream ( tools File In ). use Ġ{ Ġtools In Ġ-> čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġwhile Ġ( true ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġze Ġ= Ġtools In . next Entry Ġ?: Ġbreak čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( ze . name . startsWith (" com / sun / tools / javac ") Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze . name . startsWith (" com / sun / tools / javadoc ") Ġ|| čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġze . name . startsWith (" com / sun / source ")) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin ified Out . put Next Entry ( ze ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġmin ified Out . write ( tools In . read All Bytes ()) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġreturn Ġmin ified čĊĠĠĠ Ġ} č Ċ } čĊ