On Tue, 12 Apr 2022 06:36:29 GMT, Koichi Sakata <ksak...@openjdk.org> wrote:
>> # Summary >> Running jdeprscan with --help option causes an exception on any OSs when the >> locale is ja, zh_CN or de. >> >> # How to reproduce this issue >> >> $ jdeprscan -J-Duser.language=ja --help >> Exception in thread "main" java.lang.IllegalArgumentException: can't parse >> argument number: dir|jar|class >> at >> java.base/java.text.MessageFormat.makeFormat(MessageFormat.java:1454) >> at >> java.base/java.text.MessageFormat.applyPattern(MessageFormat.java:492) >> at java.base/java.text.MessageFormat.<init>(MessageFormat.java:371) >> at java.base/java.text.MessageFormat.format(MessageFormat.java:860) >> at jdk.jdeps/com.sun.tools.jdeprscan.Messages.get(Messages.java:62) >> at jdk.jdeps/com.sun.tools.jdeprscan.Main.printHelp(Main.java:706) >> at jdk.jdeps/com.sun.tools.jdeprscan.Main.run(Main.java:529) >> at jdk.jdeps/com.sun.tools.jdeprscan.Main.call(Main.java:717) >> at jdk.jdeps/com.sun.tools.jdeprscan.Main.main(Main.java:725) >> Caused by: java.lang.NumberFormatException: For input string: "dir|jar|class" >> at >> java.base/java.lang.NumberFormatException.forInputString(NumberFormatException.java:67) >> at java.base/java.lang.Integer.parseInt(Integer.java:668) >> at java.base/java.lang.Integer.parseInt(Integer.java:786) >> at >> java.base/java.text.MessageFormat.makeFormat(MessageFormat.java:1452) >> ... 8 more >> >> $ jdeprscan -J-Duser.language=zh -J-Duser.country=CN --help >> (Same as above) >> >> $ jdeprscan -J-Duser.language=de --help >> (Same as above) >> >> Of course, it works well when the locale is anything other than those >> locales. >> >> # Details >> I found **''**{dir|jar|class}**''** in both ja and zh_CN properties files. >> Doubled single quotes mean a single quote in MessageFormat class, so the >> class recognizes {dir|jar|class} as a FormatElement and throws the >> exception. >> >> I removed extra single quotes. >> >> # Test >> It seems there is no test class for it. So I run commands as I mentioned >> before. >> >> $ jdeprscan -J-Duser.language=ja --help >> 使用方法: jdeprscan [options] {dir|jar|class} ... >> >> オプション: >> --class-path PATH >> --for-removal >> --full-version >> -? -h --help >> -l --list >> --release 7|8|9|10|11|12|13|14|15|16|17|18|19 >> -v --verbose >> --version >> >> 非推奨APIの使用について各引数をスキャンします。引数には、 >> パッケージ階層のルートを指定するディレクトリ、JARファイル、 >> クラス・ファイルまたはクラス名を使用できます。クラス名は、 >> 完全修飾クラス名を使用して指定する必要があります。ネストされた >> クラスは$で区切ります。例: >> >> java.lang.Thread$State >> >> --class-pathオプションは、依存するクラスの解決のための >> 検索パスを指定します。 >> >> --for-removalオプションは、スキャンとリスト化を削除予定で非推奨のAPIに >> 限定します。リリース値が6、7または8の場合は使用できません。 >> >> --full-versionオプションはツールのバージョン文字列の全体を出力します。 >> >> --help (-? -h)オプションは、ヘルプ・メッセージ全体を出力します。 >> >> --list (-l)オプションは非推奨APIセットを出力します。スキャンは行われないため、 >> ディレクトリ、JARまたはクラス引数を指定する必要はありません。 >> >> --releaseオプションは、スキャンする非推奨APIのセットを提供するJava SE >> リリースを指定します。 >> >> --verbose (-v)オプションを使用すると、処理中に追加のメッセージを出力できます。 >> >> --versionオプションは、簡略化されたツールのバージョン文字列を出力します。 >> >> $ jdeprscan -J-Duser.language=zh -J-Duser.country=CN --help >> 用法:jdeprscan [options] {dir|jar|class} ... >> >> 选项: >> --class-path PATH >> --for-removal >> --full-version >> -? -h --help >> -l --list >> --release 7|8|9|10|11|12|13|14|15|16|17|18|19 >> -v --verbose >> --version >> >> 扫描每个参数以了解是否使用了过时的 API。 >> 参数可以是指定程序包分层结构、JAR 文件、 >> 类文件或类名的根的目录。类名必须 >> 使用全限定类名指定,并使用 $ 分隔符 >> 指定嵌套类,例如, >> >> java.lang.Thread$State >> >> --class-path 选项提供了用于解析从属类的 >> 搜索路径。 >> >> --for-removal 选项限制扫描或列出已过时并待删除 >> 的 API。不能与发行版值 6、7 或 8 一起使用。 >> >> --full-version 选项输出工具的完整版本字符串。 >> >> --help (-? -h) 选项输出完整的帮助消息。 >> >> --list (-l) 选项输出一组已过时的 API。不执行扫描, >> 因此不应提供任何目录、jar 或类参数。 >> >> --release 选项指定提供要扫描的已过时 API 集 >> 的 Java SE 发行版。 >> >> --verbose (-v) 选项在处理期间启用附加消息输出。 >> >> --version 选项输出工具的缩写版本字符串。 >> >> $ jdeprscan -J-Duser.language=de --help >> Verwendung: jdeprscan [Optionen] {dir|jar|class} ... >> >> Optionen: >> --class-path PATH >> --for-removal >> --full-version >> -? -h --help >> -l --list >> --release 7|8|9|10|11|12|13|14|15|16|17|18|19 >> -v --verbose >> --version >> >> Scannt jedes Argument auf die Verwendung veralteter APIs. Ein Argument >> kann ein Verzeichnis, das die Root einer Packagehierarchie angibt, >> eine JAR-Datei, eine Klassendatei oder ein Klassenname sein. Der Klassenname >> muss durch einen vollständig qualifizierten Klassennamen mit $ als >> Trennzeichen >> für verschachtelte Klassen angegeben werden. Beispiel: >> >> java.lang.Thread$State >> >> Die Option --class-path liefert einen Suchpfad für die Auflösung >> von abhängigen Klassen. >> >> Die Option --for-removal begrenzt das Scannen oder Auflisten auf APIs, die >> veraltet sind >> und entfernt werden sollen. Kann nicht mit den Releasewerten 6, 7, oder 8 >> verwendet werden. >> >> Die Option --full-version gibt die vollständige Versionszeichenfolge des >> Tools aus. >> >> Die Option --help (-? -h) gibt eine vollständige Hilfemeldung aus. >> >> Die Option --list (-l) gibt die Gruppe der veralteten APIs aus. Es wird >> nicht gescannt, >> daher dürfen keine Verzeichnis-, JAR- oder Klassenargumente angegeben werden. >> >> Die Option --release gibt das Java SE-Release an, das die Gruppe >> der veralteten APIS zum Scannen liefert. >> >> Die Option --verbose (-v) aktiviert die Ausgabe zusätzlicher Meldungen >> während der Verarbeitung. >> >> Die Option --version gibt die verkürzte Versionszeichenfolge des Tools aus. >> >> $ jdeprscan -J-Duser.language=en --help >> Usage: jdeprscan [options] {dir|jar|class} ... >> >> options: >> --class-path PATH >> --for-removal >> --full-version >> -? -h --help >> -l --list >> --release 7|8|9|10|11|12|13|14|15|16|17|18|19 >> -v --verbose >> --version >> >> Scans each argument for usages of deprecated APIs. An argument >> may be a directory specifying the root of a package hierarchy, >> a JAR file, a class file, or a class name. The class name must be >> specified using a fully qualified class name using the $ separator >> character for nested classes, for example, >> >> java.lang.Thread$State >> >> The --class-path option provides a search path for resolution >> of dependent classes. >> >> The --for-removal option limits scanning or listing to APIs that are >> deprecated for removal. Cannot be used with a release value of 6, 7, or 8. >> >> The --full-version option prints out the full version string of the tool. >> >> The --help (-? -h) option prints out a full help message. >> >> The --list (-l) option prints out the set of deprecated APIs. No scanning is >> done, >> so no directory, jar, or class arguments should be provided. >> >> The --release option specifies the Java SE release that provides the set >> of deprecated APIs for scanning. >> >> The --verbose (-v) option enables additional message output during >> processing. >> >> The --version option prints out the abbreviated version string of the tool. > > Koichi Sakata has updated the pull request incrementally with one additional > commit since the last revision: > > Remove unnecessary single quotes in the German file Thank you for sponsoring, Naoto. ------------- PR: https://git.openjdk.java.net/jdk/pull/8174