java - Windows(7?)上 Java 7 命令行的损坏的通配符扩展

标签 java windows-7 command-line classpath wildcard

我观察到 Java7 在 Windows 上的通配符扩展行为有一个奇怪的行为。

几个世纪以来,“*”与 * 之间有着明显的区别。
这似乎不再适用于 Java7(至少在 Windows7 上)。

我在使用 wildcard classpath 时注意到了这个问题.
尽管引用了通配符类路径,它还是被扩展了。
因此似乎不再可能将通配符传递给 java 应用程序。

因此使用 java -cp "somewhere/*" 会失败("somewhere\*" 也会失败)

解决方法似乎是:java -cp "somewhere/*;" 会抑制扩展。

为了验证行为,我编写了一个小的 Echo.java 类。

我发现使用 java 1.6.0 引用“*”和普通 * 可以像预期的那样工作, 而在 Java7 上,我总是得到扩展的通配符。 到目前为止,这是在 Windows7 上观察到的,不知道在 XP 上会发生什么。

问题出现了,因为黑暗时代的 CMD.EXE 永远不会扩展 Windows 上的通配符(就像 UNIX 上的任何 shell 一样)。相反,每个可执行文件都必须使用 setargv.obj 显式执行此操作.

我发现了两个相关的问题,它们似乎描述了一个类似的问题:

这是被其他人观察到的吗?
或者是否有一些模糊的 Windows 或批处理文件设置来控制它?

节食者。

最佳答案

是的,我注意到了同样的问题。

  • the release notes for Java7 update 4 中将其解释为“已知问题” .

  • Here is the bug report .修复将在 Java7 更新 8 中提供(当前版本是更新 6)。

  • 请注意,没有 shell 选项解决方法,因为在 Windows 中,shell 不处理通配符扩展。 (而在 Unix 中,shell 执行扩展)。

关于java - Windows(7?)上 Java 7 命令行的损坏的通配符扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9195073/

相关文章:

java - (龙头1.8) "stained_hardened_clay:14"!= "stained_hardened_clay:14"

java - 在 Linux 中使用 Java 运行 CPU 利用率命令

r - 从命令行运行 R 文件时出错

command-line - 如何将 grep 输出到文件?

Java - native 库问题

java - 在未包含在标签中的多行文本节点中用 <br> 标签替换换行符

delphi - 为什么 PC 之间的控件缩放比例不同?

c++ - 无法在 Windows 7 x64 上使用 Qt Creator 进行编译

google-chrome - Chrome 远程桌面 - 使用 Windows 键功能从一个桌面到另一个桌面

bash - 为什么在传递带引号的参数时得到 "/bin/sh: Argument list too long"?