2017-10-12 5 views
2

Un problème est survenu pendant que j'essaie de créer SXSSFWorkbook.Exception utilisant les polices stix avec 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) 

fichier gradle:

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

Environnement:

  • la version OpenJDK "1.8.0_141"
  • RedHat 7.4
  • wildfly 10.0.0

Répondre

5

Le problème s'est produit uniquement sur Red hat version 7.4. il est signalé there. et les gars de Red Hat travaillent pour le résoudre here. la solution que j'ai trouvé est juste de fournir les polices afin de forcer Utopia comme police par défaut, utilisée par Java.

Créez le fichier suivant /etc/fonts/local.conf avec le contenu suivant:

<?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> 

Assurez-vous que le fichier est lisible par l'utilisateur correct.

+0

La même solution fonctionne également sur 'CentOS Linux version 7.4.1708 (Core)'. Assurez-vous de 'sudo chmod 644/etc/fonts/local.conf' –