Comme indiqué dans l'article Comment créer un JRE léger pour la distribution, dans Java 9 ou version ultérieure, créez un JRE léger composé des modules minimum requis. peut faire.
Vous pouvez utiliser la commande jdeps
fournie avec le JDK pour savoir quels modules dépendants doivent être inclus dans le JRE léger, mais lorsque vous exécutez votre application sur le JRE léger que vous avez créé, vous pouvez rencontrer les exceptions suivantes:
UnsupportedCharsetException: EUC-JP
Il s'agit d'une exception qui se produit lorsque vous spécifiez un code de caractère non pris en charge. C'est une exception qui n'est pas déclenchée dans un JDK normal qui n'est pas un JRE léger, mais qui doit contenir les modules minimum requis indiqués par la commande jdeps
, mais une exception a été déclenchée.
Cela signifie que la commande jdeps
seule n'a pas assez de modules à inclure dans le JRE léger.
Cet article vous montrera comment éviter les exceptions ci-dessus lors de l'utilisation de JRE légers.
Ceci est dû au fait que les codes de caractères étendus tels que ʻEUC-JPne sont pas inclus dans le module
java.base`.
À propos, dans le Javadoc du module jdk.charsets
de JDK9, la description suivante il y a.
Fournit des jeux de caractères qui ne sont pas dans java.base (principalement des caractères codés sur deux octets et des jeux de caractères IBM).
Cela signifie que les jeux de codes de caractères japonais nécessitent un module supplémentaire jdk.charsets
.
Si vous spécifiez le code de caractère à l'aide de la méthode Charset.forName
, etc. dans le code source Java comme indiqué ci-dessous, la commande jdeps
n'affiche pas le module jdk.charsets
, créez donc un JRE léger. Vous devez être prudent en le faisant.
Charset.forName("EUC-JP")
Lors de la création d'un JRE léger avec la commande jlink
, vous pouvez gérer les codes de caractères étendus en incluant le module jdk.charsets
.
jlink --compress=2 --module-path ../jmods --add-modules java.base,jdk.charsets --output jre