Wie im Artikel Erstellen einer Lightweight-JRE für die Verteilung beschrieben, erstellt Java 9 oder höher eine Lightweight-JRE, die aus den minimal erforderlichen Modulen besteht tun können.
Sie können den mit dem JDK gelieferten Befehl "jdeps" verwenden, um herauszufinden, welche abhängigen Module in der Lightweight-JRE enthalten sein sollen. Wenn Sie Ihre App jedoch auf der von Ihnen erstellten Lightweight-JRE ausführen, können die folgenden Ausnahmen auftreten:
UnsupportedCharsetException: EUC-JP
Dies ist eine Ausnahme, die auftritt, wenn Sie einen nicht unterstützten Zeichencode angeben. Es handelt sich um eine Ausnahme, die nicht in einem normalen JDK ausgelöst wird, bei dem es sich nicht um eine einfache JRE handelt. Sie sollte jedoch die im Befehl "jdeps" angegebenen Mindestmodule enthalten. Es wurde jedoch eine Ausnahme ausgelöst.
Dies bedeutet, dass der Befehl jdeps
allein nicht über genügend Module verfügt, um in die Lightweight-JRE aufgenommen zu werden.
In diesem Artikel erfahren Sie, wie Sie die oben genannten Ausnahmen vermeiden, wenn Sie JREs mit geringem Gewicht verwenden.
Dies liegt daran, dass erweiterte Zeichencodes wie "EUC-JP" nicht im Modul "java.base" enthalten sind.
Übrigens im Javadoc des Moduls jdk.charsets
von JDK9 die folgende Beschreibung es gibt.
Stellt Zeichensätze bereit, die sich nicht in java.base befinden (hauptsächlich Doppelbytezeichen und IBM Zeichensätze).
Dies bedeutet, dass japanische Zeichensätze ein zusätzliches Modul "jdk.charsets" erfordern. Wenn Sie den Zeichencode mit der Methode "Charset.forName" usw. im Java-Quellcode angeben (siehe unten), zeigt der Befehl "jdeps" das Modul "jdk.charsets" nicht an. Erstellen Sie daher eine einfache JRE. Sie müssen dabei vorsichtig sein.
Charset.forName("EUC-JP")
Wenn Sie mit dem Befehl "jlink" eine einfache JRE erstellen, können Sie erweiterte Zeichencodes verarbeiten, indem Sie das Modul "jdk.charsets" einschließen.
jlink --compress=2 --module-path ../jmods --add-modules java.base,jdk.charsets --output jre
Recommended Posts