Upgrade RHEL von 7.3 zu 7.4: ArrayIndexOutOfBoundsException in der Sonne.font.CompositeStrike.getStrikeForSlot
Wir nur ein Upgrade eines Servers aus RHEL v7.3
zu v7.4
.
Dieses einfache Programm arbeitet in RHEL v7.3 und schlägt in der v7.4
public class TestJava {
public static void main(String[] args) {
Font font = new Font("SansSerif", Font.PLAIN, 12);
FontRenderContext frc = new FontRenderContext(null, false, false);
TextLayout layout = new TextLayout("\ude00", font, frc);
layout.getCaretShapes(0);
System.out.println(layout);
}
}
Ausnahme in RHEL 7.4 ist :
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 0
at sun.font.CompositeStrike.getStrikeForSlot(CompositeStrike.java:75)
at sun.font.CompositeStrike.getFontMetrics(CompositeStrike.java:93)
at sun.font.Font2D.getFontMetrics(Font2D.java:415)
at java.awt.Font.defaultLineMetrics(Font.java:2176)
at java.awt.Font.getLineMetrics(Font.java:2283)
at java.awt.font.TextLayout.fastInit(TextLayout.java:598)
at java.awt.font.TextLayout.<init>(TextLayout.java:393)
Te Ergebnis auf RHEL v7.3:
sun.font.StandardTextSource@7ba4f24f[start:0, len:1, cstart:0, clen:1, chars:"de00", level:0, flags:0, font:java.awt.Font[family=SansSerif,name=SansSerif,style=plain,size=12], frc:java.awt.font.FontRenderContext@c14b833b, cm:sun.font.CoreMetrics@412ae196]
Dem update von RHEL v7.4
beinhaltet ein update von openjdk
aus 1.8.0.131
zu 1.8.0.141
aber dies scheint nicht mit der version von openjdk
, das problem ist das gleiche mit der IBM JDK
kommen mit WebSphere v9.0
(v1.8.0 SR4 FP6
). Mit der gleichen version von der IBM JDK
auf eine RHEL v7.3
und RHEL v7.4
server, das Programm funktioniert bei RH 7.3 und schlägt in RH 7.4 der gleichen Weise wie mit openjdk
Irgendeine Idee was Los ist???
InformationsquelleAutor titou10 | 2017-08-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wir es endlich gefunden !
RHEL v7.4 (Upgrade von v7.3 oder frisch installieren) kommt mit Paket
stix-fonts
.Wenn dieses Paket installiert ist, wird die Standard-schriftart geändert von
Utopia
zuSTIX
Also, java jetzt als Standard-Schriftarten zugeordnet sind
STIX
einschließlich dersans-serif
font-FamilieAus welchem Grund auch immer, die
STIX
Schriftarten scheint nicht gut zu spielen mit java (openjdk
+IBM JDK
) und führen Ausnahmen und schlecht berechnet Artefakte positionsvorrichtung bei der Verwendungjava.awt
, was der Fall mitJasperReports
Wir beendeten das erstellen einer Datei namens
/etc/fonts/local.conf
mit diesem, um ihn zu zwingen, zurückUtopia
als Standard-schriftart verwendet, die von java..[BEARBEITET 2018-10-22]
Es scheint der Fehler behoben ist in JDK 1.8.192: https://bugs.java.com/view_bug.do?bug_id=JDK-8188030
InformationsquelleAutor titou10
Umgebung RHEL 7.4
Sind wir nicht in der Lage, die Verwendung der schriftart sans serif nach dem upgrade mit OpenJDK oder IBM JDK.
Neuen Ausnahme-Verwendung von Schriften-Bibliotheken in openjdk 1.8.0.141-2 .
Auflösung
Das Problem wird behoben, in java-1.8.0-openjdk-1.8.0.151-1.b12.el7_4.x86_64 . RHSA-2017:2998 - Sicherheitsempfehlung
Abhilfe
Ist zu beobachten, dass in einigen Szenarien Installation dejavu-serif-Schriften behebt das problem.
yum install dejavu-serif-Schriften
InformationsquelleAutor ALi Maken
wenn Sie installieren nur ein anderer font wie "dejavu-serif-Schriften" das problem wird gelöst werden. Oder Sie tun das workaroundwith der "lokalen.conf" - Datei. RedHat hat aufgelistet, das problem als ein bug der in der Version 7.4 und ist auf der Suche nach einer echten Lösung und Abhängigkeiten: schau mal hier: https://bugzilla.redhat.com/show_bug.cgi?id=1479563
InformationsquelleAutor kfu