Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Java处理命令行数据(args[]的替代品)_Java_Command Line Arguments - Fatal编程技术网

用Java处理命令行数据(args[]的替代品)

用Java处理命令行数据(args[]的替代品),java,command-line-arguments,Java,Command Line Arguments,我编写了许多java工具,这些工具从命令行获取反馈信息,java通过main(args[])提供对这些工具的访问。所讨论的应用程序通常是Windows工具(因此从命令行或批处理文件运行) 从我痛苦的经历中学到的,Windows根据实际调用的参数数据对参数数据进行自己的转换(有时很古怪)。然后,它被转移到Java上,Java自己进行解析和处理,最终为您提供args[]。正是这种多层次的解析\预处理导致了我的悲痛,因为事情在哪里被破坏并不总是很清楚 我的第一个问题是,在进入args之前,Java实际

我编写了许多java工具,这些工具从命令行获取反馈信息,java通过
main(args[])
提供对这些工具的访问。所讨论的应用程序通常是Windows工具(因此从命令行或批处理文件运行)

从我痛苦的经历中学到的,Windows根据实际调用的参数数据对参数数据进行自己的转换(有时很古怪)。然后,它被转移到Java上,Java自己进行解析和处理,最终为您提供
args[]
。正是这种多层次的解析\预处理导致了我的悲痛,因为事情在哪里被破坏并不总是很清楚


我的第一个问题是,在进入args之前,Java实际上做了什么样的解析\转换?据我所知,它只接受操作系统提供的参数数据(据我所知,它只是一个长字符串),并基于空白(制表符,空格字符)对其进行分隔。有那么简单吗

第二个问题,在将未处理的命令行数据传递给Java时,是否可以获取该数据?虽然用空格分隔arg通常很方便,但当您开始添加更复杂的排列时,arg就会崩溃。因此,
“-foo=bar”
可能最终成为
“-foo=”
“bar”,或
“-foo”
“=”
“bar”,或
“-foo”
“=bar”,这取决于空格风吹的方向。如果我在第一个问题中所做的假设是正确的,那么您可以通过在args中的每个元素之间插入一个空格来构建一个字符串,但是如果完成了其他处理,那么访问原始args将变得更加有用


最后一点,我知道已经有很多库可以用Java处理命令行数据。我可能会在某个时候开始使用其中的一个,但现在我只想确切地了解正在做什么,以及Java本身提供了哪些替代方案(如果有的话)。

这些参数由shell解析并传递给您的程序。Java不做任何额外的解析。

通过一些特殊的技巧,您可以获得整行代码

使用


感谢:

“在到达args之前,Java实际上做了什么样的解析\转换”无。通过shell传递的任何东西都可以得到。
So“-foo=bar”可能会以“-foo=”“bar”或“-foo”“=”bar”或“-foo”“=bar”
-您是否有一个工作示例来证明
-foo=bar
args[]
中作为
-foo=bar”以外的任何东西传递?另请参见
ManagementFactory.getRuntimeMXBean()
getInputArguments()