如何创建带有执行选项的 Jar 文件?
How to create a Jar file with execution options?
如何创建带有执行选项的jar文件,例如,想法是执行命令:
java -jar MyProgram.jar -M someFile.txt
或
java -jar MyProgram.jar -cp someFile.txt
因此 -M 选项定义了一种处理文件的特定方法 someFile.txt 并使用 -cp 定义了代码的另一种行为。
有了这个,我如何从我的代码中得到这个结果,是否需要在 Main class 中写一些东西,或者我如何定义这样的行为?
看看 this example.
基本上是 args
在你的主要方法中
public static void main(String[] args) { ... }
args = 你放在 java -jar MyJar.jar
之后的 arguments
例如 -cp someFile.txt
作为字符串[]:{"-cp", "someFile.txt"}
我想你可能需要检查 Apache Commons-CLI,它允许你做你上面描述的事情,我还举了一个例子它是如何工作的,它给出了指定消息的方式参数:
https://commons.apache.org/proper/commons-cli/introduction.html
Options options = new Options();
options.addOption( "M", false,"Merge files request.")
.addOption("CP", false,"Copy files from file.");
CommandLineParser parser = new DefaultParser();
try {
CommandLine cmd = parser.parse(options, args);
if (!cmd.hasOption("M")) {
throw new IllegalArgumentException("Must specify an input file.");
}
// Do something
if (!cmd.hasOption("CP")) {
throw new IllegalArgumentException("Must specify an input file.");
}
// Do something
catch (Exception e) {
System.out.println(e.getMEssage());
}
如何创建带有执行选项的jar文件,例如,想法是执行命令:
java -jar MyProgram.jar -M someFile.txt
或
java -jar MyProgram.jar -cp someFile.txt
因此 -M 选项定义了一种处理文件的特定方法 someFile.txt 并使用 -cp 定义了代码的另一种行为。
有了这个,我如何从我的代码中得到这个结果,是否需要在 Main class 中写一些东西,或者我如何定义这样的行为?
看看 this example.
基本上是 args
在你的主要方法中
public static void main(String[] args) { ... }
args = 你放在 java -jar MyJar.jar
之后的 arguments
例如 -cp someFile.txt
作为字符串[]:{"-cp", "someFile.txt"}
我想你可能需要检查 Apache Commons-CLI,它允许你做你上面描述的事情,我还举了一个例子它是如何工作的,它给出了指定消息的方式参数:
https://commons.apache.org/proper/commons-cli/introduction.html
Options options = new Options();
options.addOption( "M", false,"Merge files request.")
.addOption("CP", false,"Copy files from file.");
CommandLineParser parser = new DefaultParser();
try {
CommandLine cmd = parser.parse(options, args);
if (!cmd.hasOption("M")) {
throw new IllegalArgumentException("Must specify an input file.");
}
// Do something
if (!cmd.hasOption("CP")) {
throw new IllegalArgumentException("Must specify an input file.");
}
// Do something
catch (Exception e) {
System.out.println(e.getMEssage());
}