Hello, i running a java application on Linux maschines with openJdk 11. When creating a worksheet like SXSSFWorkbook workbook = new SXSSFWorkbook(-1); SXSSFSheet sheet = workbook.createSheet("testsheet"); i run into follwoing error: java.lang.ClassCastException: class sun.font.CompositeFont cannot be cast to class sun.font.PhysicalFont (sun.font.CompositeFont and sun.font.PhysicalFont are in module java.desktop of loader 'bootstrap') at sun.font.SunFontManager.getDefaultPhysicalFont(SunFontManager.java:1086) ~[?:?] at sun.font.SunFontManager.initialiseDeferredFont(SunFontManager.java:965) ~[?:?] at sun.font.SunFontManager.findOtherDeferredFont(SunFontManager.java:903) ~[?:?] at sun.font.SunFontManager.findDeferredFont(SunFontManager.java:919) ~[?:?] at sun.font.SunFontManager.findFont2D(SunFontManager.java:2120) ~[?:?] at java.awt.Font.getFont2D(Font.java:506) ~[?:?] 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.0.1.jar!/:4.0.1] at org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117) ~[poi-ooxml-4.0.1.jar!/:4.0.1] at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:82) ~[poi-ooxml-4.0.1.jar!/:4.0.1] at org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:664) ~[poi-ooxml-4.0.1.jar!/:4.0.1] at org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:685) ~[poi-ooxml-4.0.1.jar!/:4.0.1] Everthing works fine with openJdk10 or if i run it under windows. Hope you can help?
Can you try with the latest POI release - 4.0.1?
I did already. Sorry I did not mentioned it. Same problem.
We cannot reproduce this locally and also not in CI, we run our large set of unit-tests against various versions of the JDK, so this seems to be something that is caused by your local setup of font-related packages. What exact operating system are you running? Can you also attach a list of font-related packages that are installed? I.e. something like the output of "dpkg --list | grep -i font"?
We are running Suse Linux Enterprise Server 11.4. There are no font-related packages installed.
There is a related question at https://stackoverflow.com/questions/54554625/openjdk-11-java-lang-classcastexception-class-sun-font-compositefont-cannot-be, but no solution or hint. It seems OpenJDK does not include some font-related stuff any more and your operating system is currently not providing any by itself. Maybe you can try to install some font-related packages to see if that solves the problem. See also the release notes at https://www.oracle.com/technetwork/java/javase/11-relnote-issues-5012449.html#JDK-8191522 Overall I don't think we can do much in Apache POI itself as the problem is a combination of installed os-packages and OpenJDK 11.
FYI, installing OpenJKD 11 on a bare Ubuntu system wants to install "fontconfig" and "fonts-dejavu-core", maybe there are similar packages on Suse.