2017-10-12 139 views
2

問題發生時,我嘗試創建SXSSFWorkbook使用stij字體與openjdk的異常?

異常堆棧跟蹤:

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這個文件:

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

環境:

  • OpenJDK的版本 「1.8.0_141」
  • 的RedHat 7.4
  • wildfly 10.0.0

回答

5

該問題僅在Red hat version 7.4發生。據報道有 there。 和紅帽子傢伙正在努力修復它here。 我找到的解決方案只是提供字體以強制將Utopia作爲java使用的默認字體。

用以下內容創建以下文件/etc/fonts/local.conf

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

確保文件是正確的用戶可讀。

+0

相同的解決方案也適用於'CentOS Linux release 7.4.1708(Core)'。 只要確保'sudo chmod 644/etc/fonts/local.conf' –