run shell command from java
exec, java
Solution
I recall that the an overload of exec method provides a parameter for the arguments seperately. You need to use that
Yup. Here is it
public Process exec(String[] cmdarray)
throws IOException
Just make the command line and all arguments Seperate elements of the String array
Problem
I am working on an application an have an issue about running shell command from java application. here is the code: ``` public String execRuntime(String cmd) { Process proc = null; int inBuffer, errBuffer; int result = 0; StringBuffer outputReport = new StringBuffer(); StringBuffer errorBuffer = new StringBuffer(); try { proc = Runtime.getRuntime().exec(cmd); } catch (IOException e) { return ""; } try { response.status = 1; result = proc.waitFor(); } catch (InterruptedException e) { return ""; } if (proc != null && null != proc.getInputStream()) { InputStream is = proc.getInputStream(); InputStream es = proc.getErrorStream(); OutputStream os = proc.getOutputStream(); try { while ((inBuffer = is.read()) != -1) { outputReport.append((char) inBuffer); } while ((errBuffer = es.read()) != -1) { errorBuffer.append((char) errBuffer); } } catch (IOException e) { return ""; } try { is.close(); is = null; es.close(); es = null; os.close(); os = null; } catch (IOException e) { return ""; } proc.destroy(); proc = null; } if (errorBuffer.length() > 0) { logger .error("could not finish execution because of error(s)."); logger.error("*** Error : " + errorBuffer.toString()); return ""; } return outputReport.toString(); } ``` but when i try to exec command like : ``` /export/home/test/myapp -T "some argument" ``` myapp reads `"some argument"` as two seperated arguments.but I want to read `"some argument"` as only a argument. when i directly run this command from terminal, it executed successfully. I tried `'"some argument"'` ,`""some argument""` , `"some\ argument"` but did not work for me. how can i read this argument as one argument.