相关疑难解决方法(0)

在eclipse中运行Java app时如何避免glob扩展

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

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

如果我使用可以由shell扩展的外卡提供参数,shell将展开它并将其提供给Java程序.这并不奇怪.所以,如果我在命令提示符下做

java WildCard test/*
Run Code Online (Sandbox Code Playgroud)

该程序将打印

test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)

其中foo.txt和bar.txt是目录"test"中的文件.

如果我用引号括起通配符参数,可以防止Shell扩展;*nix上的单引号,以及Windows上的双引号.所以对于Windows,如果我在命令提示符下执行以下操作:

java WildCard "test/*"
Run Code Online (Sandbox Code Playgroud)

该程序现在将打印

test/*
Run Code Online (Sandbox Code Playgroud)

(没有扩张).

但是,我发现Eclipse运行启动器中的引用似乎没有效果,并且参数仍在扩展.如果我放

"test/*"
Run Code Online (Sandbox Code Playgroud)

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

test/foo.txt
test/bar.txt
Run Code Online (Sandbox Code Playgroud)

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

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

java eclipse shell wildcard expansion

10
推荐指数
1
解决办法
1353
查看次数

标签 统计

eclipse ×1

expansion ×1

java ×1

shell ×1

wildcard ×1