https://bz.apache.org/bugzilla/show_bug.cgi?id=68778

--- Comment #10 from Felix König <de.felix.koe...@gmail.com> ---
Sure! First off, it's the same error as before. Here's a full reproducer:

Given a minimal maven project with POI as a dependency, built as a
jar-with-dependencies:

```xml
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0";
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
https://maven.apache.org/xsd/maven-4.0.0.xsd";>
    <modelVersion>4.0.0</modelVersion>
    <groupId>org.acme</groupId>
    <artifactId>poi-font-reproducer</artifactId>
    <version>1.0.0-SNAPSHOT</version>

    <properties>
        <maven.compiler.release>21</maven.compiler.release>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
       
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
    </properties>

    <dependencies>
        <dependency>
            <groupId>org.apache.poi</groupId>
            <artifactId>poi-ooxml</artifactId>
            <version>5.3.0</version>
        </dependency>
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-assembly-plugin</artifactId>
                <executions>
                    <execution>
                        <id>create-my-bundle</id>
                        <phase>package</phase>
                        <goals>
                            <goal>single</goal>
                        </goals>
                        <configuration>
                            <archive>
                                <manifest>
                                    <mainClass>Main</mainClass>
                                </manifest>
                            </archive>
                            <descriptorRefs>
                               
<descriptorRef>jar-with-dependencies</descriptorRef>
                            </descriptorRefs>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
</project>
```

And a minimal main method that instantiates an SXSSFWorkbook:

```java
import org.apache.poi.xssf.streaming.SXSSFWorkbook;

public class Main {
    public static void main(String... args) {
        SXSSFWorkbook workbook = new SXSSFWorkbook();
        workbook.createSheet();
        System.out.println("Success!");
    }
}
```

Building with `mvn clean install` and running the resulting jar on my Windows
machine works fine:
```
PS C:\rd\poi-font-reproducer> java -jar
./target/poi-font-reproducer-1.0.0-SNAPSHOT-jar-with-dependencies.jar
Success!
```

Now let's put the program into a docker image that does not have any fonts
installed using this Dockerfile:
```
FROM registry.access.redhat.com/ubi8/openjdk-21-runtime:1.19
COPY --chown=185 target/*.jar /deployments/
COPY target/poi-font-reproducer-1.0.0-SNAPSHOT-jar-with-dependencies.jar
/app.jar
ENTRYPOINT ["java","-jar","/app.jar"]
```

Then building with `mvn clean install && docker image build -t
poi-font-reproducer:latest .` and running the docker image with `docker run
poi-font-reproducer:latest` yields the following results:

POI version 5.3.0:  
```
$ docker run poi-font-reproducer:latest
Exception in thread "main" java.lang.RuntimeException: Fontconfig head is null,
check your fonts or fonts configuration
        at
java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1263)
        at
java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221)
        at
java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:105)
        at
java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:696)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:352)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:309)
        at
java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:309)
        at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:55)
        at
java.desktop/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37)
        at
java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51)
        at java.desktop/java.awt.Font.getFont2D(Font.java:526)
        at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2278)
        at
java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
        at java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
        at
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidthAsFloat(SheetUtil.java:353)
        at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
        at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:106)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:698)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:692)
        at Main.main(Main.java:6)
```

POI version 5.2.5:  
```
$ docker run poi-font-reproducer:latest
Exception in thread "main" java.lang.RuntimeException: Fontconfig head is null,
check your fonts or fonts configuration
        at
java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1263)
        at
java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221)
        at
java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:105)
        at
java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:696)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:352)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:309)
        at
java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:309)
        at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:55)
        at
java.desktop/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37)
        at
java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51)
        at java.desktop/java.awt.Font.getFont2D(Font.java:526)
        at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2278)
        at
java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
        at java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
        at
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidthAsFloat(SheetUtil.java:352)
        at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
        at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:106)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:694)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:688)
        at Main.main(Main.java:6)
```

POI version 5.2.4:  
```
$ docker run poi-font-reproducer:latest
Exception in thread "main" java.lang.RuntimeException: Fontconfig head is null,
check your fonts or fonts configuration
        at
java.desktop/sun.awt.FontConfiguration.getVersion(FontConfiguration.java:1263)
        at
java.desktop/sun.awt.FontConfiguration.readFontConfigFile(FontConfiguration.java:221)
        at
java.desktop/sun.awt.FontConfiguration.init(FontConfiguration.java:105)
        at
java.desktop/sun.awt.X11FontManager.createFontConfiguration(X11FontManager.java:696)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:352)
        at java.desktop/sun.font.SunFontManager$2.run(SunFontManager.java:309)
        at
java.base/java.security.AccessController.doPrivileged(AccessController.java:319)
        at java.desktop/sun.font.SunFontManager.<init>(SunFontManager.java:309)
        at java.desktop/sun.awt.FcFontManager.<init>(FcFontManager.java:35)
        at java.desktop/sun.awt.X11FontManager.<init>(X11FontManager.java:55)
        at
java.desktop/sun.font.PlatformFontInfo.createFontManager(PlatformFontInfo.java:37)
        at
java.desktop/sun.font.FontManagerFactory.getInstance(FontManagerFactory.java:51)
        at java.desktop/java.awt.Font.getFont2D(Font.java:526)
        at java.desktop/java.awt.Font.canDisplayUpTo(Font.java:2278)
        at
java.desktop/java.awt.font.TextLayout.singleFont(TextLayout.java:469)
        at java.desktop/java.awt.font.TextLayout.<init>(TextLayout.java:530)
        at
org.apache.poi.ss.util.SheetUtil.getDefaultCharWidth(SheetUtil.java:301)
        at
org.apache.poi.xssf.streaming.AutoSizeColumnTracker.<init>(AutoSizeColumnTracker.java:117)
        at org.apache.poi.xssf.streaming.SXSSFSheet.<init>(SXSSFSheet.java:98)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createAndRegisterSXSSFSheet(SXSSFWorkbook.java:694)
        at
org.apache.poi.xssf.streaming.SXSSFWorkbook.createSheet(SXSSFWorkbook.java:688)
        at Main.main(Main.java:6)
```

POI version 5.2.3:  
```
$ docker run poi-font-reproducer:latest
Success!
```

-- 
You are receiving this mail because:
You are the assignee for the bug.
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@poi.apache.org
For additional commands, e-mail: dev-h...@poi.apache.org

Reply via email to