【问题标题】:What does "java: No match." mean?“java:不匹配”是什么意思?意思是?
【发布时间】:2010-07-26 14:59:44
【问题描述】:

从命令行运行java时:

java -classpath bin:pellet-2.0.0/lib/* com.stuff.MyClass argumentTextStuff

我收到以下回复:

java: No match.

这是什么意思? which java 指向预期的文件。如果我去掉星号,那么我会得到预期的类未找到错误。谷歌搜索没有成果,因为我不断得到关于匹配正则表达式模式的东西。

【问题讨论】:

标签: java command-line


【解决方案1】:

啊……已经想通了。它在我使用 bash shell 时起作用,但是 * 在 tcsh shell 中的处理方式不同。所以我们切换到 bash 并且它可以工作。原因在here 中进行了描述(根据下面 cmets 中 polygenelubricants 的建议)。

【讨论】:

【解决方案2】:

这是一个 bash(或您使用的任何 shell)错误消息,而不是 java 错误消息。

表示“bin:pellet-2.0.0/lib/*”不匹配任何文件。

不要在类路径中使用通配符。

【讨论】:

  • 这是一个 tcsh shell 错误,因为 tcsh 对待 * 符号的方式与 bash 不同。实际上,文件通配符在 bash 中应有的工作,并且使用星号比列出由星号表示的 20 个左右的 jar 文件更可取。
  • Ops,你是对的 :( 我曾经是“唯一一个”使用 tcsh 的人,所以我确定你使用的是 bash。无论如何,我不同意“globbing在 bash 中按应有的方式工作。我仍然更喜欢一个不会​​尝试猜测我想要的 shell。
【解决方案3】:

如果* 有所不同,那么问题可能与它的解释方式和由谁解释有关。尝试转义它,使其按原样传递给java

另见

【讨论】:

    【解决方案4】:

    使用 unix Shell,您通常需要将这些内容放在单引号或双引号中,以保持 Shell 扩展星号。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-08-13
      • 2013-03-09
      • 2020-05-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多