【发布时间】:2017-12-23 18:40:16
【问题描述】:
目前,我正在处理一个现有的 Java 项目,我的目标是创建一个命令行界面,用于向它传递参数、“运行”它,可以这么说。
我正在使用Apache commons cli library,如下所示:
import org.apache.commons.cli.CommandLine;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.DefaultParser;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.ParseException;
public class CommandLineParameters {
public static void main(String[] args) {
CommandLineParser parser = new DefaultParser();
Options options = new Options();
options.addOption("a", "abc", true, "First Parameter");
options.addOption("x", "xyz", true, "Second Parameter");
options.addOption("h", "help", false, "Shows this Help");
try {
CommandLine commandLine = parser.parse(options, args);
System.out.println(commandLine.getOptionValue("a"));
System.out.println(commandLine.getOptionValue("x"));
if (commandLine.hasOption("h")) {
HelpFormatter formatter = new HelpFormatter();
formatter.printHelp("CommandLineParameters", options);
}
} catch (ParseException e) {
e.printStackTrace();
}
}
}
在 Eclipse 中,我可以通过修改传递给 Run Configurations... 的 Arguments 来运行它,但是,我实际上想要做的是,能够从终端 shell,类似于“正常”终端程序,例如 grep 或 ipconfig。
如何使用 Java 来实现?
注意: 我不是试图从命令行编译/构建这个程序,我试图在命令行中为程序创建一个接口。
【问题讨论】:
-
如果您询问命令行语法本身,这些命令是
java和javaw,它们在documentation page. 上有描述 -
您的“注释”毫无意义。您可能想举一个“程序”的示例以及您现在如何尝试调用它。我怀疑这里有一个很大的 XY 问题。
-
您需要创建一个 shell 脚本来执行此操作,因此答案取决于您的操作系统。
-
这个想法是你调用shell脚本,然后用你的程序启动JVM并传递参数。
-
不,我的意思是您创建一个单独的脚本,其中仅包含用于运行程序的命令,然后您可以将该脚本放入您的路径变量中(例如,使用您的 bash 配置文件)
标签: java terminal command-line-interface