Java 使用可选参数创建可运行的jar

Java 使用可选参数创建可运行的jar,java,jar,Java,Jar,我在这里遇到了一个奇怪的小问题: 我希望客户能够做到以下几点: (1) java-jar myJar.jar inputFile outputFile 或 (2) java-jar myJar.jar文本输出文件 outputFile是可选参数 基本上,(1)将为他们从文件中读取输入,而(2)他们提供我的程序将直接使用的输入。没有办法确定参数是否是输入,或者它是否是文件的位置,尽管我能想到。对于普通的命令行内容,您可以指定一个类似于-i inputfile的标志,以显示您希望它从文件中读取。我在

我在这里遇到了一个奇怪的小问题:

我希望客户能够做到以下几点:

(1)
java-jar myJar.jar inputFile outputFile

(2)
java-jar myJar.jar文本输出文件

outputFile
是可选参数

基本上,(1)将为他们从文件中读取输入,而(2)他们提供我的程序将直接使用的输入。没有办法确定参数是否是输入,或者它是否是文件的位置,尽管我能想到。对于普通的命令行内容,您可以指定一个类似于
-i inputfile
的标志,以显示您希望它从文件中读取。我在这里有哪些选项可以保持客户端的易用性

是否是创建客户端必须用于第一个参数的语法的唯一选项?i、 e

“-t text”
“-i输入文件”


我见过commons cli之类的库可以实现这一点,但我更喜欢不使用库的解决方案。

我建议从标准输入(System.in)读取,然后打印到标准输出(System.out)

这样,就不需要任何参数。对于使用CLI工具的人来说,这非常直观。您可以将输入来自何处的详细信息留给操作系统

因此,在unix操作系统中,您可以使用类似以下内容的jar:

echo "some test" | java -jar myjar.jar > outfile


如果我正确地理解了这个问题,您就不能检查参数的数量而不是显式地指定直接输入吗?例如,如果传递了一个参数,则输出第一个参数,如果传递了两个参数,则输入第一个参数,输出第二个参数

话虽如此,对于大多数习惯cli的人来说,使用连字符类型的“option”语法可能是最简单的

input=text or file=inputfile 
(可选输出=outputFile)


在这种情况下,您可以以相同的方式处理所有参数,并使用分隔符“=”拆分它们,检查“=”的左侧以确定它是哪个参数。

此jar将由另一个程序执行。程序的输出取决于提供的参数。它可能什么都不是,也可能是文本输出。我不确定我是否理解这有助于消除可能的参数误解。你是对的,这个建议并不能解决你的参数问题。但这是一个更好的选择。根本不使用参数,而是将程序的输入传输到输出。是的,我想我会被迫这样做。谢谢谢谢你的意见。但是立方更快。不管怎样,我还是投了赞成票
input=text or file=inputfile