【问题标题】:'*' as parameter changes to ".classpath, .project, .settings, bin, src," [duplicate]'*' 作为参数更改为“.classpath,.project,.settings,bin,src,”[重复]
【发布时间】:2012-06-04 07:50:08
【问题描述】:

可能重复:
Java command line arguments. Using * as an argument for multiplication

我只是想写一个简单的计算器。 如果我输入 2 * 3 作为参数,则数组随后将如下所示:

[2, .classpath, .project, .settings, bin, src, 3]

我们在公司“版本:Indigo Service Release 2”中安装的所有 Eclipse 都会发生这种情况 内部版本号:20120216-1857"

我的一个朋友没有这个问题,那么有谁知道这个问题的根源吗?

问候

尼哥

【问题讨论】:

  • 看起来命令外壳(如 bash)将您的参数扩展为文件名。这将是您的代码或 Java 之外的问题。你是如何运行你的程序的?
  • 那是真的,我没有找到那个帖子我很抱歉。

标签: java arrays parameters multiplication


【解决方案1】:

参数* 被shell 解释器替换为当前工作目录中的文件列表。这通常发生在 Linux/Unix 平台上,但不会(必然)发生在 Windows 上。您的朋友使用 Windows 机器吗?

换句话说,这与 Java 无关,而是与 shell 命令解释器有关,它在执行 java 之前解释您的命令行。为避免这种情况,您需要用单引号引用敏感参数,例如 java MyApp 2 '*' 3

【讨论】:

  • 非常感谢您的快速而有帮助的回答。他用的是mac os,我们公司用的是Windows 7。
【解决方案2】:

您在命令行上传递参数,其中“*”实际上是通配符;它将匹配当前目录中的所有文件(恰好是 .classpath、.project、.settings、bin、src。)

【讨论】:

    【解决方案3】:

    如果您在 Unix 下运行,这是命令行扩展的自然结果。使用\*"*"。如果您使用的是 Windows,则不会发生这种情况。

    【讨论】:

      猜你喜欢
      • 2014-06-21
      • 1970-01-01
      • 1970-01-01
      • 2021-05-27
      • 2011-04-26
      • 1970-01-01
      • 2016-02-23
      • 2012-11-22
      • 2014-08-16
      相关资源
      最近更新 更多