Windows上Java7命令行的通配符断开(7?)

Dit*_*itz 16 java command-line wildcard classpath windows-7

我在Windows上观察到Java7的通配符扩展行为的奇怪行为.

几个世纪以来,"*"与*之间存在着明显的差异.
似乎这对Java7来说不再适用(至少在Windows7上).

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

因此使用java -cp "somewhere/*"将失败(如同"somewhere\*").

一种解决方法似乎是:java -cp "somewhere/*;"它抑制了扩张.

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

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

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

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

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

迪特.

lah*_*her 7

是的,我注意到同样的问题.

  • 它在Java7 update 4的发行说明中被解释为"已知问题" .

  • 这是错误报告.该修复程序将在Java7 update 8中提供(当前版本为更新6).

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