java.awt.HeadlessException, выброшенное из HeadlessGraphicsEnvironment.getDefaultScreenDevice
Мне нужно выполнить некоторую обработку изображений на Java-сервере (Debian с Java-версией "1.6.0_12"), и я получаю исключение java.awt.HeadlessException из своего кода:
java.awt.HeadlessException
at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64)
at WaxOn.getDefaultConfiguration(WaxOn.java:341)
Даже когда для java.awt.headless установлено значение true (как видно из этой печати кода):
if (!java.awt.GraphicsEnvironment.isHeadless())
{
logger.warn("Headless mode is not enabled");
}
else
{
logger.info("Headless mode");
}
Это код, который выдает исключение:
public static GraphicsConfiguration getDefaultConfiguration()
{
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice gd = ge.getDefaultScreenDevice();
return gd.getDefaultConfiguration();
}
Есть идеи, как это решить?
2 ответа
Когда без головы у вас нет экранного устройства. Документация понятна:
Броски: HeadlessException - если isHeadless() возвращает true
Ваш код, похоже, получает конфигурацию графического устройства по умолчанию на компьютере, на котором нет используемого графического устройства. Это не имеет особого смысла и никогда не сработает.
Если бы вы могли объяснить, почему вы пытаетесь это сделать (на машине без головы), мы могли бы предложить альтернативу.