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]