# HG changeset patch # User mchung # Date 1517440509 28800 # Node ID 60c19c384333fc3185b2db0e6ef7d203fbb15398 # Parent 554cb38e0cafa7437b2a6c07bc4217d6f2993c6d 8196310: jlink --suggest-providers fails with missing resource if --output specified Reviewed-by: alanb, lancea, sundar diff -r 554cb38e0caf -r 60c19c384333 src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java --- a/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java Wed Jan 31 14:21:52 2018 -0800 +++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/internal/JlinkTask.java Wed Jan 31 15:15:09 2018 -0800 @@ -43,8 +43,6 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; -import java.util.Collection; -import java.util.Collections; import java.util.Comparator; import java.util.Date; import java.util.HashMap; @@ -231,7 +229,8 @@ try { List remaining = optionsHelper.handleOptions(this, args); if (remaining.size() > 0 && !options.suggestProviders) { - throw taskHelper.newBadArgs("err.orphan.arguments", toString(remaining)) + throw taskHelper.newBadArgs("err.orphan.arguments", + remaining.stream().collect(Collectors.joining(" "))) .showUsage(true); } if (options.help) { @@ -659,9 +658,12 @@ throws BadArgs { if (args.size() > 1) { - throw taskHelper.newBadArgs("err.orphan.argument", - toString(args.subList(1, args.size()))) - .showUsage(true); + List arguments = args.get(0).startsWith("-") + ? args + : args.subList(1, args.size()); + throw taskHelper.newBadArgs("err.invalid.arg.for.option", + "--suggest-providers", + arguments.stream().collect(Collectors.joining(" "))); } if (options.bindServices) { @@ -714,7 +716,7 @@ .forEach(names::remove); if (!names.isEmpty()) { log.println(taskHelper.getMessage("warn.provider.notfound", - toString(names))); + names.stream().sorted().collect(Collectors.joining(",")))); } String msg = String.format("%n%s:", taskHelper.getMessage("suggested.providers.header")); @@ -722,11 +724,6 @@ } } - private static String toString(Collection collection) { - return collection.stream().sorted() - .collect(Collectors.joining(",")); - } - private String getSaveOpts() { StringBuilder sb = new StringBuilder(); sb.append('#').append(new Date()).append("\n"); diff -r 554cb38e0caf -r 60c19c384333 src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties --- a/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Wed Jan 31 14:21:52 2018 -0800 +++ b/src/jdk.jlink/share/classes/jdk/tools/jlink/resources/jlink.properties Wed Jan 31 15:15:09 2018 -0800 @@ -128,7 +128,7 @@ err.unknown.option=unknown option: {0} err.missing.arg=no value given for {0} err.internal.error=internal error: {0} {1} {2} -err.invalid.arg.for.option=invalid argument for option: {0} +err.invalid.arg.for.option={0} does not accept \"{1}\" argument err.option.after.class=option must be specified before classes: {0} err.option.unsupported={0} not supported: {1} err.orphan.arguments=invalid argument: {0}