RFR(XS) 8218029 [TESTBUG] Use -Djava.class.path= to specify empty -cp in CDS tests
Ioi Lam
ioi.lam at oracle.com
Thu Jan 31 03:51:04 UTC 2019
Hi Calvin,
The command-line that you gave (on the Linux shell) would pass the empty
string as the value for -cp.
However, in the JTREG test cases included in this patch, the
command-line that's executed is effectively the following as typed in a
Linux shell
$ java -cp \"\" MyApp
Here's a way to reproduce the problem. You can see that the string with
2 double quote characters were recorded in the NON_EXIST part of the CDS
archive. That's not the intention of the test case.
================
$ echo sun/tools/jar/Main > classlist
$ java -Xshare:dump -cp \"\" -XX:SharedClassListFile=classlist -verbose
| grep Main
[0.100s][info][class,load] sun.tools.jar.Main source: jrt:/jdk.jartool
[0.103s][info][class,load] sun.tools.jar.Main$CRC32OutputStream source:
jrt:/jdk.jartool
[0.106s][info][class,load] sun.tools.jar.Main$ModuleInfoEntry source:
jrt:/jdk.jartool
$ tbjava -Xshare:on -XX:+PrintSharedArchiveAndExit
[0.002s][info][class,path] opened: /jdk/bld/sandbox/images/jdk/lib/modules
[0.007s][info][class,path] type=BOOT
[0.007s][info][class,path] Expecting BOOT
path=/jdk/bld/sandbox/images/jdk/lib/modules
[0.007s][info][class,path] ok
[0.007s][info][class,path] type=APP
[0.007s][info][class,path] Expecting -Djava.class.path=""
[0.007s][info][class,path]
[0.007s][info][class,path] Run time APP classpath is shorter than the
one at dump time:
[0.007s][info][class,path] type=NON_EXIST
[0.007s][info][class,path] Expecting that "" does not exist
[0.007s][info][class,path] ok
[0.007s][info][class,path] checking shared classpath entry:
/jdk/bld/sandbox/images/jdk/lib/modules
[0.007s][info][class,path] ok
archive is invalid
================
Thanks
- Ioi
On 1/30/19 3:03 PM, Calvin Cheung wrote:
> Hi Ioi,
>
> The fix looks fine but I'm not sure if it is necessary.
>
> I've tried the following on linux and windows and the java.class.path
> property is not set.
>
> java -cp "" MyApp
>
> MyApp just display all system properties as follows:
>
> Properties properties = System.getProperties();
>
> properties.forEach((k, v) -> System.out.println(k + ":" + v));
>
> thanks,
> Calvin
>
> On 1/29/19, 7:51 PM, Ioi Lam wrote:
>> https://bugs.openjdk.java.net/browse/JDK-8218029
>> http://cr.openjdk.java.net/~iklam/jdk13/8218029-testbug-empty-classpath.v01/
>>
>>
>> Please review this simple fix. For portability,
>>
>> "-cp", "\"\"",
>>
>> in the JVM command-line is replaced with
>>
>> "-Djava.class.path="
>>
>>
>> Thanks!
>>
>> Ioi
>>
More information about the hotspot-runtime-dev
mailing list