在 Java 11 中,Apache POI 在创建工作表时需要 fontconfig 支持。解决方法是安装并配置 fontconfig。
以下是配置 fontconfig 的示例代码:
import java.nio.file.*;
import org.apache.fop.*;
import org.apache.fop.fonts.*;
import org.slf4j.*;
public class FontConfigUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(FontConfigUtil.class);
private static boolean fontConfigLoaded = false;
public static synchronized void loadFontConfig() {
if (fontConfigLoaded) {
return;
}
LOGGER.debug("Loading fontconfig...");
try {
Path fontConfig = Paths.get("/etc/fonts/fonts.conf");
if (Files.notExists(fontConfig)) {
LOGGER.warn("Unable to find fontconfig file at {}", fontConfig);
return;
}
FopFactory fopFactory = FopFactory.newInstance(new URI("."));
FontManager fontManager = fopFactory.getFontManager();
File configFile = new File(fontConfig.toUri());
fontManager.setUserConfig(configFile);
fontConfigLoaded = true;
} catch (Exception ex) {
LOGGER.error("Error loading fontconfig", ex);
}
}
}
在使用 Apache POI 之前,在代码中调用 FontConfigUtil.loadFontConfig() 方法即可。
上一篇:ApachePOI在调用cell.getCell()时出现了空指针异常。
下一篇:ApachePOI在模块化Java项目中无法工作,导致java.lang.IllegalAccessError:超类访问检查失败。