Jar文件不接受java中的大字符串

时间:2016-09-19 13:37:51

标签: java jar parameters

将一个字符串(在下面的代码中为arg1)与大约800K字符(是的,这是一个巨大的数字)传递给java jar的最佳方法是什么。以下是我用来调用jar文件的代码:

p = Runtime.getRuntime().exec(jrePath+"/bin/java -jar C:/folder/myjar.jar methodName" + arg1);

或者,我如何创建一个jar文件来接受主String}中的一个byte[]输入和一个void main(String args[])输入

还是其他任何想法?要求是以某种方式将巨大的String / byte[] String传递给我正在创建的java jar文件

1 个答案:

答案 0 :(得分:1)

this question中所述,操作系统设置了最大参数长度。看到这个参数是800K个字符,可以肯定地说你在大多数计算机上都超过了这个最大值。要解决此问题,您可以使用内置API将arg1写入临时文件:

final File temp;
try {
    temp = File.createTempFile("temp-string", ".tmp");
} catch (final IOException e){
    //TODO handle error
    return;
}
try (final BufferedWriter writer = new BufferedWriter(new FileWriter(temp))) {
    writer.write(arg1);
} catch (final IOException e){
    //TODO handle error
    return;
}
try {
    // run process and wait for completion
    final Process process = Runtime.getRuntime().exec(
        jrePath + "/bin/java -jar C:/folder/myjar.jar methodName " +
        temp.getAbsolutePath());
    final int exitCode = process.waitFor();
    if (exitCode != 0) {
        //TODO handle error
    }
} catch (final IOException | InterruptedException e){
    //TODO handle error
    return;
}
if (!file.delete()) {
    //TODO handle error
}