HeadlessException с использованием docx4j xhtmlrenderer на сервере RedHat

Я получаю java.awt.HeadlessException при использовании Docx4jReplacedElementFactory на сервере RedHat. Кто-нибудь знает обходной путь для этого? (кроме запуска Xvfb)

Я углубился в трассировку стека и источник проблемы java.awt.GraphicsEnvironment.getDefaultScreenDevice(), который выдает исключение при работе в автономной среде. Это как документировано: "throws: HeadlessException - если isHeadless() возвращает true" (см. Комментарий к java.awt.HeadlessException, выброшенному из HeadlessGraphicsEnvironment.getDefaultScreenDevice).

Дано getDefaultScreenDevice работает как указано, есть ли другой подход при использовании docx4j, который избегает идти туда?

Глядя на источник org.docx4j.org.xhtmlrenderer.util.ImageUtil.getGraphicsConfiguration, мы видим:

private static GraphicsConfiguration getGraphicsConfiguration() {
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
  -> GraphicsDevice gs = ge.getDefaultScreenDevice();
    GraphicsConfiguration gc = gs.getDefaultConfiguration();
    return gc;
}

Трассировки стека:

Cause details:
java.awt.HeadlessException
    at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:82)
    at org.docx4j.org.xhtmlrenderer.util.ImageUtil.getGraphicsConfiguration(ImageUtil.java:119)
    at org.docx4j.org.xhtmlrenderer.util.ImageUtil.makeCompatible(ImageUtil.java:70)
    at org.docx4j.org.xhtmlrenderer.swing.AWTFSImage.createImage(AWTFSImage.java:38)
    at org.docx4j.org.xhtmlrenderer.swing.NaiveUserAgent.createImageResource(NaiveUserAgent.java:197)
    at org.docx4j.org.xhtmlrenderer.swing.NaiveUserAgent.getImageResource(NaiveUserAgent.java:167)
    at org.docx4j.org.xhtmlrenderer.docx.Docx4jReplacedElementFactory.createReplacedElement(Docx4jReplacedElementFactory.java:57)
[snip]

1 ответ

Решение

Вы могли бы применить этот недавний апстрим патч

Другие вопросы по тегам