2017-03-28 38 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