2009-02-05 8 views
0

Est-il possible de spécifier quel affichage X la JVM doit lancer ses fenêtres via la JVM? Je pense quelque chose comme çaEst-il possible de passer le nom X Display à la JVM?

java -DISPLAY=THE_DISPLAY_I_WANT:0.1 -jar my.jar 

J'ai regardé les pages man et je ne trouve rien.

ou ai-je besoin pour envelopper mon appel à la machine virtuelle Java dans un script shell comme celui-ci

#/bin/sh 
export DISPLAY=THE_DISPLAY_I_WANT:0.1 
java -jar my.jar 

Je ne veux pas faire un script juste pour spécifier un argument qui peut être passé directement à la JVM.

PS: Non, je ne veux pas changer ma variable DISPLAY je enviroment veux lancer la machine virtuelle Java sur DISPLAY selon que je l'aime :)

Mise à jour En réponse à la question « Pourquoi est-il important si j'utilise la deuxième solution " En utilisant la deuxième solution, Si je voudrais démarrer une session jvm sur plusieurs affichages différents, je devrais régler le DISPLAY pour chaque session.

Ce que je cherche est comme ce que vous pouvez faire avec Xprograms

essayer xterm -display my_display:0.0 Donc ma question est ce que je peux le faire avec la machine virtuelle Java, je ne peux pas le voir documenté nulle part. Si elle ne peut pas être fait alors la réponse correcte doit être « Non, vous ne pouvez pas », je connais déjà les alternatives :)

Merci

Répondre

4

Compte tenu de vos contraintes sur la réponse, la réponse que vous cherchez est « Il ne peut se faire »

Je suis toujours curieux de savoir pourquoi la deuxième solution ne fonctionne pas pour vous. Je sais que ce n'est pas ce que vous voulez faire, je veux juste savoir pourquoi

+0

Je suis assez curieux à ce sujet moi-même. –

+0

La raison en est que je développe pour une configuration multi-écran, chaque écran est configuré avec un affichage sperate 0.0 0.1 0.n et ainsi de suite. Je ne veux pas avoir à exporter DISPLAY = blah avant de lancer chaque JVM pour chaque application. Je voulais savoir si je pouvais simplement l'ajouter aux arguments :) – hhafez

+0

comme pour la raison pourquoi il est clairement plus pratique lorsque vous avez de nombreux affichages que vous avez affaire et vous ne voulez pas changer votre affichage par défaut. – hhafez

0

Si vous utilisez sh, bash ou comme vous peut faire juste

DISPLAY=THE_DISPLAY_I_WANT:0.1 java -jar my.jar 
+0

Je sais que je peux le faire, mais ce n'est pas ma question – hhafez

+0

voir ma mise à jour à la question – hhafez

0

Si vous contentez-vous de votre suggestion,

 
java -DISPLAY=THE_DISPLAY_I_WANT:0.1 -jar my.jar 

alors je ne sais pas pourquoi vous résistez l'une de ces:Ils ne modifient pas la variable d'environnement globalement, si c'est ce qui vous préoccupe. Ils ne le modifient que pour le nouveau processus (et tout ce qu'il engendre). Les autres nouveaux processus ne seront pas affectés et les processus déjà en cours ne seront certainement pas affectés. Si ce n'est pas le problème, alors je suppose que ce que vous voulez dire, c'est que dans le premier exemple, vous ne modifieriez pas vraiment la variable d'environnement DISPLAY, pas même pour le nouveau processus Java. Au lieu de cela, vous comptez sur la couche X11 de la JVM actuelle pour avoir d'autres moyens de déterminer où envoyer sa sortie graphique. Je suppose que cela pourrait fonctionner de cette façon. Peut-être que tous les autres programmes Java sur Terre ignorent cela autrement et permettent à la JVM de se rabattre sur l'utilisation de la variable d'environnement à la place, comme cela fonctionne pour les programmes non-Java.

Mais pourquoi est-ce important? Ce n'est pas comme si votre programme utilisait la variable d'environnement (non modifiée) DISPLAY pour quelque chose d'autre, n'est-ce pas? Comme il n'est pas utilisé pour autre chose, vous pouvez aussi bien l'utiliser pour son usage prévu, non?

+0

voir ma mise à jour à la question – hhafez