A DESCRIPTION OF THE PROBLEM : When installing Java 16.0.1 at least two java.exe files are installed. On my machine: 1. C:\Program Files\Java\jdk-16.0.1\bin\java.exe 2. C:\Program Files\Common Files\Oracle\Java\javapath\java.exe And #2 is the one linked to the `java` command on the system. These two java.exe behave differently with respect to double quoted command line arguments. #1 Keeps the double quotes #2 Strips the double quotes STEPS TO FOLLOW TO REPRODUCE THE PROBLEM : Here's a reproduction: public class PrintArgs { public static void main(String [] args) { for (String arg: args) { System.out.println(arg); } } } Running this using the installed java (which uses #2 above): PS C:\Program Files\Java\jdk-16.0.1\bin> java PrintArgs '\"bar\"' bar Running it using #1: PS C:\Program Files\Java\jdk-16.0.1\bin> .\java.exe PrintArgs '\"bar\"' "bar" EXPECTED VERSUS ACTUAL BEHAVIOR : EXPECTED - Should print "bar" (with the double quotes intact). ACTUAL - Prints bar (double quotes stripped). ---------- BEGIN SOURCE ---------- public class PrintArgs { public static void main(String [] args) { for (String arg: args) { System.out.println(arg); } } } ---------- END SOURCE ---------- CUSTOMER SUBMITTED WORKAROUND : I have found no workaround what so ever. I'd be super happy to know of one. FREQUENCY : always
|