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

Ваш код, похоже, получает конфигурацию графического устройства по умолчанию на компьютере, на котором нет используемого графического устройства. Это не имеет особого смысла и никогда не сработает.

Если бы вы могли объяснить, почему вы пытаетесь это сделать (на машине без головы), мы могли бы предложить альтернативу.

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