İşte tamamen farklı bir yaklaşım. Bunu kullanıyorum
try {
Field defaultHeadlessField = java.awt.GraphicsEnvironment.class.getDeclaredField("defaultHeadless");
defaultHeadlessField.setAccessible(true);
defaultHeadlessField.set(null,Boolean.FALSE);
Field headlessField = java.awt.GraphicsEnvironment.class.getDeclaredField("headless");
headlessField.setAccessible(true);
headlessField.set(null,Boolean.TRUE);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (NoSuchFieldException e) {
e.printStackTrace();
}
başarıyla başsız bir ortamda (Ubuntu) sunucu tarafı BufferedImages üzerinde çizmek. Bunun en güzel yanı, komut satırında herhangi bir -D değişkeninin ayarlanmasını gerektirmemesi ve DISPLAY değişkenini ayarlamanız gerekmemesidir.
Ayrıca herhangi bir anda bu kodu çalıştırabilirsiniz. Diğer sınıflar yüklenmeden önce bunu çağırmak için endişelenmenize gerek yok.
Farz edelim ki, uzak bir makineden uzaktaki bir makinede Swing arabirimi kullanmaya çalışıyorsanız bu işe yaramayabilir.
Ayrıca http://en.wikipedia.org/wiki/Xvfb ilginizi çekebilir. – lexicore