Question

J'aimerais implémenter une interface de ligne de commande pour une application Java. Cela ne serait pas trop difficile à faire, sauf que je voudrais que le programme en ligne de commande affecte l'état d'un autre programme d'interface graphique Java. Ainsi, par exemple, je pourrais taper:

java CliMain arg1 arg2

Et une autre instance en cours d'exécution exécutera l'action appropriée.

Quel est le moyen le plus simple de mettre en œuvre quelque chose comme ceci?

Était-ce utile?

La solution

L'application graphique peut être à l'écoute sur un port TCP (sur l'interface localhost ) et l'application CLI s'y connecterait.

Une solution consiste à utiliser REST sur HTTP.

Autres conseils

Vous pouvez également utiliser JMX. Cela vous donne beaucoup de choses "gratuitement". (dans le cas simple, vous venez de mettre en œuvre un bean et de l’enregistrer - très simple), et est particulièrement bien adapté à cette tâche.

vous pouvez faire en sorte que l'application graphique (comme un éditeur) écoute sur

1) événement de presse-papiers d'un certain type
   si l'événement est d'un type qui vous intéresse, obtenez le contenu du presse-papiers.

2) socket serveur sur un certain port
   écouter sur un socket serveur. Lorsque le programme CLI démarre, il se connecte au socket du serveur sur un port connu, envoie des informations et se ferme.

3) file d'attente
   vous pouvez utiliser le programme CLI et le programme GUI.

si vous souhaitez approfondir vos recherches, de nombreux éditeurs professionnels comme emacs utilisent le même mécanisme. http://www.emacswiki.org/emacs/EmacsClient

Votre application peut être contrôlée via RMI . L'application implémenterait une interface de contrôle, enregistrerait son service sur localhost et l'application en ligne de commande obtiendrait un proxy rmi et appellerait les méthodes de contrôle souhaitées ...

Cela semble difficile au début, mais lorsque vous aurez essayé, vous verrez rapidement à quel point c'est facile. Et il prend également en charge le cryptage via SSL . Vous pouvez donc sécuriser votre échange de données s'il y avait des données en ligne relatives à la sécurité.

Le moyen le plus simple serait que l'interface graphique écoute les commandes sur un port TCP. La ligne de commande enverrait des commandes et l'interface graphique les interpréterait.

Peut-être pourriez-vous également le faire avec des pipes nommées, mais je ne sais pas comment vous allez mettre en œuvre cela en Java.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top