diff -r f567c5137990 -r 8f41a04d1a02 jdk/src/java.base/share/native/libjli/java.c --- a/jdk/src/java.base/share/native/libjli/java.c Sat Mar 07 10:11:03 2015 -0800 +++ b/jdk/src/java.base/share/native/libjli/java.c Sat Mar 07 15:21:36 2015 -0800 @@ -661,15 +661,24 @@ * arguments are for the application (i.e. the main class name, or * the -jar argument). */ - if ((i > 0 && *arg != '-') - || JLI_StrCmp(arg, "-version") == 0 - || JLI_StrCmp(arg, "-fullversion") == 0 - || JLI_StrCmp(arg, "-help") == 0 - || JLI_StrCmp(arg, "-?") == 0 - || JLI_StrCmp(arg, "-jar") == 0 - || JLI_StrCmp(arg, "-X") == 0 - ) { - return; + if (i > 0) { + char *prev = argv[i - 1]; + // skip non-dash arg preceded by class path specifiers + if (*arg != '-' && + ((JLI_StrCmp(prev, "-cp") == 0 + || JLI_StrCmp(prev, "-classpath") == 0))) { + continue; + } + + if (*arg != '-' + || JLI_StrCmp(arg, "-version") == 0 + || JLI_StrCmp(arg, "-fullversion") == 0 + || JLI_StrCmp(arg, "-help") == 0 + || JLI_StrCmp(arg, "-?") == 0 + || JLI_StrCmp(arg, "-jar") == 0 + || JLI_StrCmp(arg, "-X") == 0) { + return; + } } /* * The following case checks for "-XX:NativeMemoryTracking=value".