可能重复:
Java 命令行参数。使用 * 作为乘法的参数
我只是想写一个简单的计算器。如果我输入 2 * 3 作为参数,则数组将如下所示:
[2,.classpath,.project,.settings,bin,src,3]
我们在公司“版本:Indigo Service Release 2 Build id:20120216-1857”中安装的所有 Eclipse 都会发生这种情况
我的一个朋友没有这个问题,那么有人知道这个问题的根源吗?
问候
尼科
可能重复:
Java 命令行参数。使用 * 作为乘法的参数
我只是想写一个简单的计算器。如果我输入 2 * 3 作为参数,则数组将如下所示:
[2,.classpath,.project,.settings,bin,src,3]
我们在公司“版本:Indigo Service Release 2 Build id:20120216-1857”中安装的所有 Eclipse 都会发生这种情况
我的一个朋友没有这个问题,那么有人知道这个问题的根源吗?
问候
尼科
该参数*
被 shell 解释器替换为当前工作目录中的文件列表。这通常发生在 Linux/Unix 平台上,但不会(必然)发生在 Windows 上。您的朋友使用 Windows 机器吗?
换句话说,这与 Java 无关,而是与 shell 命令解释器有关,它在执行java
. 为避免这种情况,您需要用单引号引用敏感参数,例如java MyApp 2 '*' 3
.
您在命令行上传递参数,其中 '*' 实际上是通配符;它将匹配当前目录中的所有文件(恰好是 .classpath、.project、.settings、bin、src。)
如果您在 Unix 下运行,这是命令行扩展的自然结果。使用\*
或"*"
。如果您使用的是 Windows,则不会发生这种情况。