Apache POI 3.10的autoSizeColumn无法自适应列宽

3
Caused by: java.lang.NoClassDefFoundError: Could not initialize class java.awt.Font
        at java.awt.font.TextLayout.singleFont(TextLayout.java:468)
        at java.awt.font.TextLayout.<init>(TextLayout.java:527)
        at org.apache.poi.ss.util.SheetUtil.getColumnWidth(SheetUtil.java:208)
        at org.apache.poi.xssf.usermodel.XSSFSheet.autoSizeColumn(XSSFSheet.java:386)

我的环境如下:

java version "1.7.0_45"
Java(TM) SE Runtime Environment (build 1.7.0_45-b18)
Java HotSpot(TM) 64-Bit Server VM (build 24.45-b08, mixed mode)

未设置nogui和java.awt.headless=true标志。


1
你使用哪个操作系统?你尝试重新安装JDK了吗?同时找到rt.jar并检查它是否包含java.awt.Font类。 - Divers
您需要在无头模式下运行它,或者在 GUI 下运行它。两种方式都可以使用,但没有一种方式不行... - Gagravarr
1个回答

8
Apache POI QuickGuide中“如何调整列宽以适应内容”入手:

警告

为了计算列宽,Sheet.autoSizeColumn使用Java2D类,如果没有可用的图形环境,则会抛出异常。如果没有可用的图形环境,您必须告诉Java您正在运行无头模式,并设置以下系统属性:java.awt.headless=true

您说您既没有在图形环境中运行,也没有启用无头模式。正如快速指南所明确的那样,如果您想要进行图形化操作(例如调整字体大小),则必须使用图形环境或启用无头模式。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接