将一个字符串(在下面的代码中为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文件
答案 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
}