我正在尝试编写一个 Java 包装器,它将在内部调用一个 shell 脚本,将所需的参数传递给脚本。我的班级将被称为如下:
MyClass --arg1 value1 --arg2 value2 --arg3 value3
我想知道解析这些论点的最佳方法是什么?我目前的做法如下:
- 拆分空格分隔的参数并将它们存储在数组中
- 遍历数组并检查 --argX ,然后选择下一个元素作为该参数的值。
但是,我目前的方法对我来说似乎很卑鄙,我正在寻找更好的方法来做到这一点。
我正在尝试编写一个 Java 包装器,它将在内部调用一个 shell 脚本,将所需的参数传递给脚本。我的班级将被称为如下:
MyClass --arg1 value1 --arg2 value2 --arg3 value3
我想知道解析这些论点的最佳方法是什么?我目前的做法如下:
但是,我目前的方法对我来说似乎很卑鄙,我正在寻找更好的方法来做到这一点。
这个怎么样:
java MainClass -Dkey1=value1 -Dkey2=value2
使用
System.getProperty("key1")
您可以访问该值。
public static void main (String[] args)
您可以使用whereString[] args
将参数传递给您的 Java 程序。
例如:YourClass --arg1 1 --arg2 2 --arg3 "Hello world"
将存储在您的args
数组中{"--arg1", "1", "--arg2", "2", "--arg3", "Hello world"}
,您应该能够使用此输入和某种“命令解析器”类来运行您的代码,您可以在其中分析输入选择运行程序的内容。
Apache Commons CLI库提供了一个 API,用于解析传递给程序的命令行选项。
请参阅受实际事件启发的示例:使用 Apache Commons CLI 进行命令行解析