繁体   English   中英

在 Eclipse 中运行 Java 应用程序时如何避免 glob 扩展

[英]How to avoid glob expansion when running a Java app in Eclipse

我遇到了 Eclipse 运行配置的一个特殊行为,它似乎是一个仅限 Windows 的问题。 假设我有一个打印命令行参数的 Java 应用程序,如下所示:

public class WildCard {
    public static void main(String[] args) {
        for (String arg: args) {
            System.out.println(arg);
        }
    }
}

如果我提供带有可被 shell 扩展的通配符的参数,shell 将扩展它并将其提供给 Java 程序。 这并不奇怪。 所以,如果我在命令提示符下

java WildCard test/*

该程序将打印

test/foo.txt
test/bar.txt

其中 foo.txt 和 bar.txt 是“test”目录中的文件。

如果我用引号将通配符参数括起来,则可以防止外壳扩展; *nix 上的单引号和 Windows 上的双引号。 因此,对于 Windows,如果我在命令提示符下执行以下操作:

java WildCard "test/*"

该程序现在将打印

test/*

(无扩展)。

但是,我发现Eclipse运行启动器中的引用似乎没有任何作用,并且仍然扩展了该参数。 如果我把

"test/*"

在 Eclipse 运行启动器的程序参数部分,并运行上面的类,我仍然得到

test/foo.txt
test/bar.txt

换句话说,当程序实际运行时,双引号似乎丢失了。 这似乎只发生在 Windows 上。

有没有办法在 Windows 上使用 Eclipse 运行启动器来防止 glob 扩展?

模式(.*)不会被 Eclipse 扩展,并且仍然可以作为正则表达式使用。

问题看起来很复杂:

*.txt
foo.*

不会被扩展,但是

*
*.*
"*"
"*.*"
\"*\"
\"*.*\"

将扩大。

看起来只有“所有文件”被展开,但所有其他字符串(包括 *)将保持不变。

我遇到了同样的问题,我使用 XP 和 eclipse 3.5.2

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM