使用包含字符“>”的参数运行 .jar 并发生一些奇怪的事情

Runing .jar with argument that contains char ">" and some strange things happen

我有一个 .jar 文件,可以这样命名:

java -jar qr-0.1.jar message=])rsfkoekfoe023k20f9k0fk3oi43jf

代码生成一个pdf417 qr图像,并将其拖放到c:/tmp,所有输出都显示在控制台中。

问题是当我把字符 > 放在消息中时,像这样:

java -jar qr-0.1.jar message=])>rsfkoekfoe023k20f9k0fk3oi43jf

这会在 jar 旁边创建一个随机文件,其中包含控制台输出,pdf417 二维码图像仅对前两个字符进行编码:/

问题是,当我调试时,带有 char > 的消息工作正常,它仅在我创建 jar 文件时中断。

这是我在代码中设置参数的方式:

for(String arg : args){
        String[] argument = arg.split("=");
        keyword = argument[0];
        if(argument.length>1){
            value = argument[1];
        }

        if(keyword.equals(KEY_MESSAGE)){
            message = value;
        }
        else if(keyword.equals(KEY_WIDTH)){
            w = Integer.parseInt(value);
        }
        else if(keyword.equals(KEY_HEIGHT)){
            h = Integer.parseInt(value);
        }
        else if(keyword.equals(KEY_FILENAME)){
            fileName = value;
        }
        else if(keyword.equals(KEY_FILEPATH)){
            filePath = value;
        }
    }

这样说:

java -jar qr-0.1.jar message="])>rsfkoekfoe023k20f9k0fk3oi43jf"

或者使用反斜杠转义特殊字符