[JAVA] Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger

Aperçu

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.

Pourquoi l'exception se produit

Ceci est dû au fait que les codes de caractères étendus tels que ʻEUC-JPne sont pas inclus dans le modulejava.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")

approche

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

Recommended Posts

Que faire si une exception UnsupportedCharsetException se produit dans un JRE léger
Que faire lorsqu'une exception javax.el.PropertyNotWritableException se produit
Que faire si IllegalStateException se produit dans PlayFramework
Remarques sur la marche à suivre lorsqu'une exception WebView ClassNotFoundException se produit dans JavaFX 12
Que faire lorsqu'une exception javax.batch.operations.JobStartException se produit
Que faire si une erreur se produit lorsque nokogiri entre lors de l'installation du bundle
Que faire si une exception ClassNotFoundException se produit lors du démarrage de Tomcat
Que faire si une erreur ActionController :: UnknownFormat se produit
Erreur ExecJS :: RuntimeUnavailable: que faire quand cela se produit
Que faire si l'installation de ffi échoue lors du lancement d'une application dans Rails
Que faire lorsqu'une exception java.io.IOException se produit dans GlassFish
Que faire lorsque la méthode n'est pas trouvée dans f: ajax
Que faire lorsque vous ne pouvez pas formater l'objet donné en tant que date dans JSF convertDateTime
[Tutoriel Rails Chapitre 2] Que faire lorsque vous faites une erreur dans le nom de la colonne
Que faire si une erreur d'analyseur SAX se produit lors de l'utilisation de Liferay 7 / DXP sur AWS
[Rails 6] Que faire lorsqu'une erreur de modèle manquante se produit après l'introduction du haml [Super facile]
Que faire si vous obtenez une erreur gcc dans Docker
Collecte des informations client lorsqu'une erreur se produit dans une application Web
Que faire lorsque les modifications du servlet ne sont pas reflétées
Que faire en cas de problème pendant Content Assist
Que faire lorsque vous rencontrez le problème node_modules avec docker-compose
Que faire lorsqu'une erreur se produit dans les rails db: migrate ((StandardError: Une erreur s'est produite, cette migration et toutes les migrations ultérieures annulées :))
[Débutant en programmation] Que faire lorsque les rails deviennent une erreur dans l'environnement de développement local
Que faire si vous obtenez une erreur de bibliothèque partagée JNI lorsque vous essayez de créer avec Eclipse
Un rappel lorsqu'une erreur aapt.exe se produit
Que faire lorsque la méthode non définie ʻuser_signed_in? '
Que faire si vous obtenez un avertissement groovy dans Thymeleaf Layout
Que faire lorsque l'hôte bloqué: "nom d'hôte" apparaît dans Ruby on Rails
il ne reste plus d'espace sur l'appareil Que faire en cas d'erreur
Que faire si le processus Tomcat reste lorsque vous arrêtez Tomcat dans Eclipse
Que faire lorsque "call'Hoge.connection 'pour établir une connexion" apparaît sur les rails c
Que faire si vous mourez avec zip si vous avez pom lors de la création d'un fichier exécutable avec gradle
Que faire si l'opération non autorisée s'affiche lors de l'exécution d'une commande dans le terminal
Comment créer un JRE léger pour la distribution
Que faire lors du débogage "Source non trouvée"
Qu'utilisez-vous lors de la conversion en String?
Que faire lorsque vous pensez que vous ne pouvez pas Groovy-> Java avec IntelliJ IDEA CE
<f: ajax> Impossible d'attacher <f: ajax> à un non-ClientBehaviorHolder Que faire lorsque vous devenez parent
Que faire lorsque la valeur devient nulle dans le second getSubmittedValue () dans JSF Validator
wildflly10 java8 ERROR [org.jboss.jca.core.tx.jbossts.XAResourceRecoveryImpl] (récupération périodique) IJ000906 Que faire en cas d'erreur
Androd: Que faire à propos de "Le Royaume est déjà dans une transaction d'écriture dans"
Que faire quand est invalide car il ne commence pas par un "-"
Lors de l'utilisation d'une liste en Java, java.awt.List sort et une erreur se produit
[Ubuntu] Que faire lorsque MongoDB ne peut pas être démarré en raison d'une erreur SocketException
Ce que vous devez savoir avant d'écrire un test dans une application iOS
Que faire si le message "Un serveur est déjà en cours d'exécution" s'affiche. Erreur lors de la tentative de démarrage du serveur rails
Que faire si la ligne de commande est trop longue apparaît lors de la création d'un projet Gradle dans Intellij IDEA
[React.useRef] Que faire lorsque le dernier état ne peut pas être référencé dans l'écouteur d'événements
Après avoir installé le gemfile'devise''bootstrap 'avec des rails, que faire lorsque l'url est une erreur
Que faire si vous obtenez une erreur de nombre d'arguments erroné dans binding.pry