Windows(7?) 上 Java7 命令行的通配符扩展中断
我在Windows上观察到Java7的通配符扩展行为的奇怪行为。
几个世纪以来,“*”和“*”之间存在着明显的差异。
似乎对于Java7来说(至少在Windows7上)不再如此。
我在使用通配符类路径时注意到了这个问题。
尽管引用了通配符类路径,但它还是得到了扩展。
因此,似乎再也不可能将通配符传递给 java 应用程序了。
因此,使用将失败(就像)。java -cp "somewhere/*"
"somewhere\*"
解决方法似乎是:这会抑制扩展。java -cp "somewhere/*;"
为了验证行为,我编写了一个小的 Echo.java类。
我发现使用java 1.6.0引用“*”和普通*的工作原理与预期一样,而在Java7上,我总是得到扩展的通配符。直到现在,这在Windows7上观察到,不知道XP上发生了什么。
问题出现了,因为Windows上的通配符永远不会被黑暗时代的CMD扩展.EXE(就像UNIX上的任何shell一样)。相反,每个可执行文件都必须使用 setargv.obj 显式执行此操作。
我发现了两个相关的问题,它们似乎描述了类似的问题:
这是其他人观察到的吗?
还是有一些晦涩难懂的Windows或批处理文件设置来控制这一点?
节食者。