2010-12-26 3 views
3

Je dois faire un traitement d'image sur un serveur Java (Debian avec la version java "1.6.0_12"), et je reçois java.awt.HeadlessException de mon code:java.awt.HeadlessException lancé à partir HeadlessGraphicsEnvironment.getDefaultScreenDevice

java.awt.HeadlessException 
    at sun.java2d.HeadlessGraphicsEnvironment.getDefaultScreenDevice(HeadlessGraphicsEnvironment.java:64) 
    at WaxOn.getDefaultConfiguration(WaxOn.java:341) 

Même lorsque java.awt.headless est défini sur true (comme en témoigne cette impression de code ainsi):

if (!java.awt.GraphicsEnvironment.isHeadless()) 
{ 
    logger.warn("Headless mode is not enabled"); 
} 
else 
{ 
    logger.info("Headless mode"); 
} 

C'est le code qui lève l'exception:

public static GraphicsConfiguration getDefaultConfiguration() 
{ 
    GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment(); 
    GraphicsDevice gd = ge.getDefaultScreenDevice(); 
    return gd.getDefaultConfiguration(); 
} 

Une idée de comment résoudre ce problème?

Répondre

4

Lorsque vous n'avez pas d'interface, vous n'avez pas de périphérique d'écran. Le documentation is clear:

Lancers: HeadlessException - si isHeadless() retourne true

+0

Lorsque isHeadless est faux, jvm tente de se connecter au serveur X. mode sans tête supposé supporter certaines opérations sans serveur X. –

+0

pas celui-ci;) – Bozho

+0

Ceci est également très clair: http://java.sun.com/products/java-media/2D/reference/faqs/index.html, cherchez «sans tête» dans ce document. –

1

Votre code semble obtenir la configuration du périphérique graphique par défaut sur une machine qui ne dispose pas d'un dispositif graphique utilisable. Cela n'a pas beaucoup de sens et ne marchera jamais.

Si vous pouviez expliquer pourquoi vous essayez de faire cela (sur une machine sans tête), nous pourrions être en mesure d'offrir une alternative.

+1

J'essaie de redimensionner et de recadrer une image. il est parfaitement logique de pouvoir le faire sans serveur X. –

+1

et btw: le fait qu'il existe une classe nommée HeadlessGraphicsEnvironment (voir la trace de la pile) suggère qu'il y a de bonnes chances que cela fonctionne réellement. –

Questions connexes