Я работал с main()
в классе, который статически загружает различные части JFreeChart в константы (и другой статический код).
Перемещение блока статической загрузки в начало класса решило мою проблему.
Это не работает:
public class Foo() {
private static final Color COLOR_BACKGROUND = Color.WHITE;
static { /* too late ! */
System.setProperty("java.awt.headless", "true");
System.out.println(java.awt.GraphicsEnvironment.isHeadless());
/* ---> prints false */
}
public static void main() {}
}
Пусть java выполнит статический блок как можно раньше, переместив его в начало класса!
public class Foo() {
static { /* works fine! ! */
System.setProperty("java.awt.headless", "true");
System.out.println(java.awt.GraphicsEnvironment.isHeadless());
/* ---> prints true */
}
private static final Color COLOR_BACKGROUND = Color.WHITE;
public static void main() {}
}
Размышляя об этом, это вполне логично :). Juhu!