Shell脚本编译和执行java程序

时间:2017-03-28 01:11:00

标签: java shell sockets command-line-arguments

我正在使用套接字,我有两个java文件(client.java和server.java),我想使用两个shell脚本来编译和执行。我希望用户输入端口号和主机名作为命令行参数,我不确定如何使用shell脚本而不是直接执行java文件本身。我一直试图用下面的代码组合来解决它,但没有运气。任何提示都会非常感激。

#!/bin/bash

javac server.java $@

hostName = $1
portNumber = $2

**为了澄清,我想要两个shell脚本(一个用于客户端,一个用于服务器),它们将编译和执行这两个java类,以及处理命令行参数。服务器脚本将接收端口号并尝试连接到该端口,如果不成功则显示错误消息。客户端脚本将对主机名和端口执行相同操作。

1 个答案:

答案 0 :(得分:1)

Java应用程序可以从命令行接受任意数量的参数。这允许用户在启动应用程序时指定配置信息。

用户在调用应用程序时输入命令行参数,并在要运行的类的名称后指定它们。例如,假设一个名为Sort的Java应用程序对文件中的行进行排序。要对名为friends.txt的文件中的数据进行排序,用户将输入:

java Sort friends.txt 启动应用程序时,运行时系统通过字符串数组将命令行参数传递给应用程序的main方法。在前面的示例中,命令行参数在包含单个String的数组中传递给Sort应用程序:" friends.txt"。

回应命令行参数

Echo示例单独在一行上显示每个命令行参数:

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

以下示例显示用户如何运行Echo。用户输入用斜体显示。

java Echo Drink Hot Java 喝 热 Java的 请注意,应用程序单独显示每个单词 - Drink,Hot和Java。这是因为空格字符分隔了命令行参数。要将Drink,Hot和Java解释为单个参数,用户可以通过将它们括在引号内来加入它们。

java Echo"喝热门Java#34; 喝热Java 解析数字命令行参数

如果应用程序需要支持数字命令行参数,则必须将表示数字的String参数(例如" 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);
    }
}
如果args [0]的格式无效,则parseInt会抛出NumberFormatException。所有Number类 - Integer,Float,Double等 - 都有parseXXX方法,它们将表示数字的String转换为其类型的对象。 资源: docs.oracle.com