Path: csiph.com!aioe.org!.POSTED!not-for-mail From: =?UTF-8?Q?Arne_Vajh=c3=b8j?= Newsgroups: comp.lang.java.programmer Subject: Re: Problem compiling with 9 for 8 Date: Mon, 2 Oct 2017 20:12:45 -0400 Organization: Aioe.org NNTP Server Lines: 42 Message-ID: References: NNTP-Posting-Host: PBuS014lhzVyHjLbXmo/ZQ.user.gioia.aioe.org Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 8bit X-Complaints-To: abuse@aioe.org User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:52.0) Gecko/20100101 Thunderbird/52.3.0 X-Notice: Filtered by postfilter v. 0.8.2 Content-Language: en-US Xref: csiph.com comp.lang.java.programmer:37525 On 10/2/2017 8:03 PM, Arne Vajhøj wrote: > On 10/2/2017 7:46 PM, Arne Vajhøj wrote: >> As I explained then I believe that --release replaces -source (that >> set the language itself version), -target (that set the generated Java >> byte code version) and -Xbootclasspath (that set the javart.jar used >> and therefore the version used). > > I found the documentation: > > https://docs.oracle.com/javase/9/migrate/toc.htm#JSMIG-GUID-7744EF96-5899-4FB2-B34E-86D49B2E89B6 > > > > The --release N flag is conceptually a macro for: > > -source N -target N -bootclasspath $PATH_TO_rt.jar_FOR_RELEASE_N > But I was wrong about the implementation. It does not use the old rt.jar. https://bugs.openjdk.java.net/browse/JDK-8058150 For JDK N and --release M, M < N, signature data of the documented APIs of release M of the platform is needed. This data is stored in the $JDK_ROOT/lib/ct.sym file, which is similar, but not the same, as the file of the same name in JDK 8. The ct.sym file is a ZIP file containing stripped-down class files corresponding to class files from the target platform versions. So --release should work without the old rt.jar, but zipinfo on ct.sym reveals that JavaFX is not included in it. So therefore an actual old jfxrt.jar is needed. Arne