2017-03-28 3 views
-1

Je travaille avec des sockets et j'ai deux fichiers java (client.java et server.java) que je veux utiliser pour compiler et exécuter deux scripts shell. Je souhaite que l'utilisateur entre le numéro de port et le nom d'hôte en tant qu'arguments de ligne de commande, et je ne sais pas comment faire cela en utilisant le script shell au lieu de simplement exécuter les fichiers java eux-mêmes. J'ai essayé de le comprendre avec une combinaison du code ci-dessous, mais sans chance. Tous les conseils seraient grandement appréciés.Script shell pour compiler et exécuter le programme java

#!/bin/bash 

javac server.java [email protected] 

hostName = $1 
portNumber = $2 

** Pour clarifier les choses, je veux deux scripts shell (un pour le client et un pour le serveur) qui compilera et exécuter ces deux classes Java, ainsi que gérer les arguments de ligne de commande. Le script du serveur prendra un numéro de port et essaiera de se connecter à ce port, affichant un message d'erreur en cas d'échec. Le script client fera de même avec un nom d'hôte et un port.

+2

** Astuce ** apprendre la différence entre java et javac –

Répondre

1

Une application Java peut accepter n'importe quel nombre d'arguments à partir de la ligne de commande. Cela permet à l'utilisateur de spécifier des informations de configuration lors du lancement de l'application.

L'utilisateur entre des arguments de ligne de commande lors de l'appel de l'application et les spécifie après le nom de la classe à exécuter. Par exemple, supposons qu'une application Java appelée Trier trie les lignes dans un fichier. Pour trier les données dans un fichier nommé friends.txt, un utilisateur entrerait:

java Trier friends.txt Lorsqu'une application est lancée, le système d'exécution passe les arguments de ligne de commande à la méthode principale de l'application via un tableau des cordes. Dans l'exemple précédent, les arguments de ligne de commande transmis à l'application Sort dans un tableau contenant une seule chaîne: "friends.txt".

Faisant écho Arguments de ligne de commande

exemple L'Echo affiche chacun de ses arguments de ligne de commande sur une ligne par lui-même:

public class Echo { 
    public static void main (String[] args) { 
     for (String s: args) { 
      System.out.println(s); 
     } 
    } 
} 

L'exemple suivant montre comment un utilisateur peut exécuter Echo. L'entrée de l'utilisateur est en italique.

java Echo Boisson chaude Java Boisson chaude Java Notez que l'application affiche chaque mot - boisson, chaud et Java - sur une ligne par lui-même. Cela est dû au fait que le caractère espace sépare les arguments de ligne de commande. Pour que Drink, Hot et Java soient interprétés comme un seul argument, l'utilisateur les rejoindrait en les encadrant entre guillemets.

java Echo « Boisson chaude Java » Boisson chaude Java Parsing numérique Arguments de ligne de commande

Si une application doit soutenir un argument de ligne de commande numérique, il faut convertir un argument de chaîne qui représente un nombre, comme "34", à une valeur numérique. Voici un extrait de code qui convertit un argument en ligne de commande à un int:

int firstArg; 
if (args.length > 0) { 
    try { 
     firstArg = Integer.parseInt(args[0]); 
    } catch (NumberFormatException e) { 
     System.err.println("Argument" + args[0] + " must be an integer."); 
     System.exit(1); 
    } 
} 

parseInt jette un NumberFormatException si le format de args [0] n'est pas valide. Toutes les classes Number - Integer, Float, Double et ainsi de suite - ont des méthodes parseXXX qui convertissent une chaîne représentant un nombre en un objet de leur type. Source: docs.oracle.com

+0

Hey, j'apprécie les tas de réponse.Mais je dois compiler/exécuter et gérer les arguments de la ligne de commande dans le script shell, pas dans le fichier java. – btoohey