-
Bug
-
Resolution: Fixed
-
P3
-
9
-
b112
-
Verified
1. If nothing matches, it removes all localedata. Per our discussion, —-include-locale should at least expect some remaining locales. You can check if only the provider classes are remained.
$ jlink --output /tmp/myimage --modulepath jmods --addmods jdk.localedata --include-locales xyz
$ jimage list /tmp/myimage/lib/modules | grep jdk.localedata
/jdk.localedata/module-info.class
/jdk.localedata/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.class
/jdk.localedata/sun/util/resources/provider/LocaleDataProvider.class
/jdk.localedata/sun/util/resources/provider/NonBaseLocaleDataMetaInfo.class
/jdk.localedata/sun/util/resources/provider/SupplementaryLocaleDataProvider.class
2. I had a typo “zh_HK” instead of “zh-HK”. It throws IAE. It should be caught and throw PluginException so that it can issue the error message gracefully.
$ jlink --output /tmp/myimage --modulepath jmods --addmods jdk.localedata --include-locales zh_HK
An exception has occurred in jlink. Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.IllegalArgumentException: range=zh_hk
at java.util.Locale$LanguageRange.<init>(java.base@9-internal/Locale.java:2908)
at java.util.Locale$LanguageRange.<init>(java.base@9-internal/Locale.java:2867)
at java.util.stream.ReferencePipeline$3$1.accept(java.base@9-internal/ReferencePipeline.java:195)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(java.base@9-internal/Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(java.base@9-internal/AbstractPipeline.java:484)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@9-internal/AbstractPipeline.java:474)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(java.base@9-internal/ReduceOps.java:913)
at java.util.stream.AbstractPipeline.evaluate(java.base@9-internal/AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(java.base@9-internal/ReferencePipeline.java:511)
at jdk.tools.jlink.internal.plugins.IncludeLocalesPlugin.configure(jdk.jlink@9-internal/IncludeLocalesPlugin.java:160)
at jdk.tools.jlink.plugin.Plugin.configure(jdk.jlink@9-internal/Plugin.java:216)
at jdk.tools.jlink.internal.TaskHelper$PluginsOptions.getPluginsConfig(jdk.jlink@9-internal/TaskHelper.java:359)
at jdk.tools.jlink.internal.TaskHelper$PluginsOptions.access$1000(jdk.jlink@9-internal/TaskHelper.java:154)
at jdk.tools.jlink.internal.TaskHelper.getPluginsConfig(jdk.jlink@9-internal/TaskHelper.java:681)
at jdk.tools.jlink.internal.JlinkTask.createImage(jdk.jlink@9-internal/JlinkTask.java:340)
at jdk.tools.jlink.internal.JlinkTask.run(jdk.jlink@9-internal/JlinkTask.java:212)
at jdk.tools.jlink.internal.Main.main(jdk.jlink@9-internal/Main.java:33)
$ jlink --output /tmp/myimage --modulepath jmods --addmods jdk.localedata --include-locales xyz
$ jimage list /tmp/myimage/lib/modules | grep jdk.localedata
/jdk.localedata/module-info.class
/jdk.localedata/sun/util/resources/cldr/provider/CLDRLocaleDataMetaInfo.class
/jdk.localedata/sun/util/resources/provider/LocaleDataProvider.class
/jdk.localedata/sun/util/resources/provider/NonBaseLocaleDataMetaInfo.class
/jdk.localedata/sun/util/resources/provider/SupplementaryLocaleDataProvider.class
2. I had a typo “zh_HK” instead of “zh-HK”. It throws IAE. It should be caught and throw PluginException so that it can issue the error message gracefully.
$ jlink --output /tmp/myimage --modulepath jmods --addmods jdk.localedata --include-locales zh_HK
An exception has occurred in jlink. Please file a bug at the Java Bug Database (http://bugreport.java.com/bugreport/) after checking the database for duplicates. Include your program and the following diagnostic in your report. Thank you.
java.lang.IllegalArgumentException: range=zh_hk
at java.util.Locale$LanguageRange.<init>(java.base@9-internal/Locale.java:2908)
at java.util.Locale$LanguageRange.<init>(java.base@9-internal/Locale.java:2867)
at java.util.stream.ReferencePipeline$3$1.accept(java.base@9-internal/ReferencePipeline.java:195)
at java.util.Spliterators$ArraySpliterator.forEachRemaining(java.base@9-internal/Spliterators.java:948)
at java.util.stream.AbstractPipeline.copyInto(java.base@9-internal/AbstractPipeline.java:484)
at java.util.stream.AbstractPipeline.wrapAndCopyInto(java.base@9-internal/AbstractPipeline.java:474)
at java.util.stream.ReduceOps$ReduceOp.evaluateSequential(java.base@9-internal/ReduceOps.java:913)
at java.util.stream.AbstractPipeline.evaluate(java.base@9-internal/AbstractPipeline.java:234)
at java.util.stream.ReferencePipeline.collect(java.base@9-internal/ReferencePipeline.java:511)
at jdk.tools.jlink.internal.plugins.IncludeLocalesPlugin.configure(jdk.jlink@9-internal/IncludeLocalesPlugin.java:160)
at jdk.tools.jlink.plugin.Plugin.configure(jdk.jlink@9-internal/Plugin.java:216)
at jdk.tools.jlink.internal.TaskHelper$PluginsOptions.getPluginsConfig(jdk.jlink@9-internal/TaskHelper.java:359)
at jdk.tools.jlink.internal.TaskHelper$PluginsOptions.access$1000(jdk.jlink@9-internal/TaskHelper.java:154)
at jdk.tools.jlink.internal.TaskHelper.getPluginsConfig(jdk.jlink@9-internal/TaskHelper.java:681)
at jdk.tools.jlink.internal.JlinkTask.createImage(jdk.jlink@9-internal/JlinkTask.java:340)
at jdk.tools.jlink.internal.JlinkTask.run(jdk.jlink@9-internal/JlinkTask.java:212)
at jdk.tools.jlink.internal.Main.main(jdk.jlink@9-internal/Main.java:33)