Estoy trabajando en una aplicación y tengo un problema al ejecutar el comando de shell desde la aplicación java. Aquí está el código:ejecute el comando de shell desde java
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();
}
pero cuando intento de usar exec comando como:
/export/home/test/myapp -T "some argument"
miaplicacion lee "some argument"
como dos seperated arguments.but quiero leer "some argument"
ya que sólo un argumento. cuando ejecuto directamente este comando desde la terminal, se ejecutó correctamente. Intenté '"some argument"'
, ""some argument""
, "some\ argument"
pero no funcionó para mí. ¿Cómo puedo leer este argumento como un argumento?
thx @midhat. esto funciona para mi – Aykut
[Cuando 'Runtime.exec()' no: Navegue por las trampas relacionadas con el método 'Runtime.exec()'] (http://www.javaworld.com/article/2071275/core-java/when -runtime-exec --- won-t.html) o posiblemente una [consulta del motor de búsqueda] a prueba del futuro (https://duckduckgo.com/?q=When+Runtime.exec+wont+Navigate+yourself+around+ trampas + relacionadas + a + el + método Runtime.exec +). –