Ich arbeite an einer Anwendung ein Problem mit dem Ausführen von Shell-Befehl von Java-Anwendung. hier ist der Code:Shell-Befehl von Java ausführen
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();
}
aber wenn ich versuche Befehl exec wie:
/export/home/test/myapp -T "some argument"
myapp "some argument"
als zwei getrennte liest arguments.but ich "some argument"
als nur ein Argument lesen möchten. Wenn ich diesen Befehl direkt vom Terminal ausführen, wurde es erfolgreich ausgeführt. Ich versuchte '"some argument"'
, ""some argument""
, "some\ argument"
, aber funktionierte nicht für mich. Wie kann ich dieses Argument als ein Argument lesen?
thx @midhat. Das funktioniert für mich. – Aykut
[Wenn 'Runtime.exec()' nicht: Navigieren Sie sich um Fallstricke im Zusammenhang mit der 'Runtime.exec() 'Methode] (http://www.javaworld.com/article/2071275/core-java/when -runtime-exec --- won-t.html) oder möglicherweise eine zukunftssichere [Suchmaschinen-Abfrage] (https://duckduckgo.com/?q=When+Runtime.exec+wont+Navigate+around+around+ Fallstricke + bezogen auf + die + Runtime.exec + Methode). –