Hi there,

I am using apache poi 4.1.0 and i have some code that should create a
Workbook, create a sheet, put some data in it and store it into file
system. My code runs fine on my windows box but throws exception when
moving to linux (please no jokes about linux box refusing code due to bad
smell, i had some of those already ;-) ).

I am running into this exception when I am calling autoSizeColumn(...) on a
XSSFSheet (in a XSSFWorkbook)...

Here's my stacktrace:

java.lang.InternalError: java.lang.reflect.InvocationTargetException
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:86)
~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at
sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:74) ~[?:?]
        at java.awt.Font.getFont2D(Font.java:497) ~[?:?]
        at java.awt.Font.canDisplayUpTo(Font.java:2246) ~[?:?]
        at java.awt.font.TextLayout.singleFont(TextLayout.java:469) ~[?:?]
        at java.awt.font.TextLayout.<init>(TextLayout.java:530) ~[?:?]
        at
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:273)
~[poi-4.1.0.jar:4.1.0]
        at
org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:248)
~[poi-4.1.0.jar:4.1.0]
        at
org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:233)
~[poi-4.1.0.jar:4.1.0]
        at
org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:549)
~[poi-ooxml-4.1.0.jar:4.1.0]
        at
org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:531)
~[poi-ooxml-4.1.0.jar:4.1.0]
        at my.package.rest.api.exportTable(ExportTable.java:181)
~[classes/:?]
       <SNIP>

Caused by: java.lang.reflect.InvocationTargetException
        at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[?:?]
        at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
~[?:?]
        at
jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
~[?:?]
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
~[?:?]
        ... 63 more

Caused by: java.lang.NullPointerException
        at
sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1262) ~[?:?]
        at
sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:225)
~[?:?]
        at sun.awt.FontConfiguration.init(FontConfiguration.java:107) ~[?:?]
        at
sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:719)
~[?:?]
        at sun.font.SunFontManager$2.run(SunFontManager.java:367) ~[?:?]
        at java.security.AccessController.doPrivileged(Native Method) ~[?:?]
        at sun.font.SunFontManager.<init>(SunFontManager.java:312) ~[?:?]
        at sun.awt.FcFontManager.<init>(FcFontManager.java:35) ~[?:?]
        at sun.awt.X11FontManager.<init>(X11FontManager.java:56) ~[?:?]
        at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native
Method) ~[?:?]
        at
jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
~[?:?]
        at
jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
~[?:?]
        at java.lang.reflect.Constructor.newInstance(Constructor.java:490)
~[?:?]
        at sun.font.FontManagerFactory$1.run(FontManagerFactory.java:84)
~[?:?]
        ... 63 more


I got the impression that the issue might deal with font availability on
linux. The host system has no x11 installed for example.

How would I be able to have my code running on the linux box? Is the choice
of Workbook important? Would it help to use a HSSFWorkbook instead?



Thanks in advance


Matthias.

Reply via email to