2017-10-12 2 views
2

Problem passiert, während ich versuche, SXSSFWorkbook zu erstellen.Ausnahme mit Stix-Fonts mit openjdk?

Exception Stacktrace:

java.lang.ArrayIndexOutOfBoundsException: 0 
    at sun.font.CompositeFont.getSlotFont(CompositeFont.java:351) 
    at sun.font.CompositeGlyphMapper.initMapper(CompositeGlyphMapper.java:81) 
    at sun.font.CompositeGlyphMapper.<init>(CompositeGlyphMapper.java:62) 
    at sun.font.CompositeFont.getMapper(CompositeFont.java:409) 
    at sun.font.CompositeFont.canDisplay(CompositeFont.java:435) 
    at java.awt.Font.canDisplayUpTo(Font.java:2063) 
    at java.awt.font.TextLayout.singleFont(TextLayout.java:470) 
    at java.awt.font.TextLayout.<init>(TextLayout.java:531) 
    at FontTest.main(FontTest.java:15) 

gradle Datei:

compile 'org.apache.poi:poi:3.14' 
compile 'org.apache.poi:poi-ooxml:3.14' 

Umwelt:

  • openjdk Version "1.8.0_141"
  • RedHat 7.4
  • Wildfly 10.0.0

Antwort

5

Das Problem trat nur auf Red hat version 7.4. wird berichtet there. und die Red Hat Jungs arbeiten daran, es zu reparieren here. Die Lösung, die ich gefunden habe, ist nur die Schriftarten zur Verfügung zu stellen, um Utopia als Standardschrift, die von Java verwendet wird, zurückzudrängen.

Erstellen Sie die folgende Datei /etc/fonts/local.conf mit folgendem Inhalt:

<?xml version='1.0'?> 
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'> 
<fontconfig> 
    <alias> 
    <family>serif</family> 
    <prefer><family>Utopia</family></prefer> 
    </alias> 
    <alias> 
    <family>sans-serif</family> 
    <prefer><family>Utopia</family></prefer> 
    </alias> 
    <alias> 
    <family>monospace</family> 
    <prefer><family>Utopia</family></prefer> 
    </alias> 
    <alias> 
    <family>dialog</family> 
    <prefer><family>Utopia</family></prefer> 
    </alias> 
    <alias> 
    <family>dialoginput</family> 
    <prefer><family>Utopia</family></prefer> 
    </alias> 
</fontconfig> 

Stellen Sie sicher, die Datei vom richtigen Benutzer lesbar ist.

+0

Die gleiche Lösung funktioniert auch auf 'CentOS Linux Release 7.4.1708 (Core)'. Stellen Sie einfach sicher, 'sudo chmod 644/etc/fonts/local.conf' –