2017-03-28 111 views
-1

我正在使用套接字,我有兩個java文件(client.java和server.java),我想用兩個shell腳本來編譯和執行。我希望用戶輸入端口號和主機名作爲命令行參數,我不確定如何使用shell腳本執行此操作,而不是直接執行java文件本身。我一直試圖找出下面的代碼組合,但沒有運氣。任何提示將被徹底讚賞。Shell腳本來編譯和執行java程序

#!/bin/bash 

javac server.java [email protected] 

hostName = $1 
portNumber = $2 

**爲了澄清,我想兩個shell腳本(一個用於客戶端和一個服務器),將編譯和執行這兩個Java類,以及處理命令行參數。服務器腳本將獲取端口號並嘗試連接到該端口,如果不成功則顯示錯誤消息。客戶端腳本將對主機名和端口執行相同的操作。

+2

**提示**學習java和javac之間的區別 –

回答

1

Java應用程序可以接受來自命令行的任意數量的參數。這允許用戶在啓動應用程序時指定配置信息。

用戶在調用應用程序時輸入命令行參數,並在要運行的類的名稱後指定它們。例如,假設一個名爲Sort的Java應用程序對文件中的行進行排序。要對名爲friends.txt的文件中的數據進行排序,用戶需要輸入:

java排序friends.txt 啓動應用程序時,運行時系統通過數組將命令行參數傳遞給應用程序的main方法的字符串。在前面的示例中,將命令行參數傳遞給包含單個字符串:「friends.txt」的數組中的Sort應用程序。

呼應命令行參數

回聲例如,通過本身顯示的每一條線的命令行參數:

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

下面的示例演示了用戶如何可能遇到回聲。用戶輸入用斜體表示。

java的回聲喝辣的Java 飲料 熱 的Java 注意應用程序顯示的每個字 - 飲料,熱,和Java - 通過自身的線。這是因爲空格字符分隔命令行參數。要將Drink,Hot和Java解釋爲單個參數,用戶將通過將它們包含在引號內來加入它們。

java的回聲「的喝辣的Java」 喝熱的Java 解析數字命令行參數

如果一個應用程序需要支持數字命令行參數,它必須將代表數字的字符串參數,如「34」,轉換爲數字值。下面是一個命令行參數轉換爲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函數拋出NumberFormatException異常如果args來格式[0]是無效的。所有Number類(Integer,Float,Double等)都有parseXXX方法,它們將表示數字的字符串轉換爲其類型的對象。 來源: docs.oracle.com

+0

嘿,我很欣賞響應堆。但我必須在shell腳本中編譯/執行和處理命令行參數,而不是在java文件中。 – btoohey