BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #17411同步于 2011/3/10
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

[已解决]Java调用shell的问题

oooooo
2011/3/10镜像同步14 回复
Servlet中用Rumtime.getRumtime().exec()来调用shell命令。 能不能在一个Servlet中多次使用这个方法调用shell命令呢? 比如在一个方法中: Rumtime.getRumtime().exec("cd ~"); Rumtime.getRumtime().exec("pwd"); 我这样写执行的时候会报错,有没有其他的方法可以在一个方法里面多次调用shell命令? 上面问题的解决方法:把cd ~替换成 /bin/sh cd ~ 现在我遇到一个新的问题 比如说,我想在~/test目录下运行ls命令 但是通过 Runtime.getRuntime().exec("/bin/sh cd ~/test"); Runtime.getRuntime().exec("ls"); 这样是得不到我想要的结果的 这两个命令之间完全没有关系=。= 怎么让它们关联起来?
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
damoyan机器人#1 · 2011/3/10
nb了啊, 大神。。。学术了啊。。。
ox机器人#2 · 2011/3/10
报什么错? 【 在 oooooo (齐鲁大地|7788|路·中郎|淡淡|琉球) 的大作中提到: 】 : Servlet中用Rumtime.getRumtime().exec()来调用shell命令。 : 能不能在一个Servlet中多次使用这个方法调用shell命令呢? : 比如在一个方法中: : ...................
oooooo机器人#3 · 2011/3/10
exception java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory java.lang.ProcessBuilder.start(ProcessBuilder.java:460) java.lang.Runtime.exec(Runtime.java:593) java.lang.Runtime.exec(Runtime.java:431) java.lang.Runtime.exec(Runtime.java:328) test.TestSuseDts.doGet(TestSuseDts.java:56) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717) root cause java.io.IOException: java.io.IOException: error=2, No such file or directory java.lang.UNIXProcess.<init>(UNIXProcess.java:148) java.lang.ProcessImpl.start(ProcessImpl.java:65) java.lang.ProcessBuilder.start(ProcessBuilder.java:453) java.lang.Runtime.exec(Runtime.java:593) java.lang.Runtime.exec(Runtime.java:431) java.lang.Runtime.exec(Runtime.java:328) test.TestSuseDts.doGet(TestSuseDts.java:56) javax.servlet.http.HttpServlet.service(HttpServlet.java:617) javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
oooooo机器人#4 · 2011/3/10
Servlet的doGet方法的代码 response.setContentType("text/html"); PrintWriter out = response.getWriter(); String line=null; InputStream is = null; InputStreamReader isr = null; BufferedReader br = null; Runtime.getRuntime().exec("cd /home/webdts/dts-nolisence/Scan"); Process process=Runtime.getRuntime().exec("pwd"); is=process.getInputStream(); isr=new InputStreamReader(is); br=new BufferedReader(isr); while ( (line = br.readLine()) != null) { out.println(line); } out.flush(); out.close(); 【 在 ox (小贝) 的大作中提到: 】 : 报什么错?
ox机器人#5 · 2011/3/10
找不到cd这个命令 【 在 oooooo (齐鲁大地|7788|路·中郎|淡淡|琉球) 的大作中提到: 】 : exception : java.io.IOException: Cannot run program "cd": java.io.IOException: error=2, No such file or directory : java.lang.ProcessBuilder.start(ProcessBuilder.java:460) : ...................
snowtree机器人#6 · 2011/3/10
Runtime.getRuntime().exec("bin/sh cd ~"); 这样试一下?
snowtree机器人#7 · 2011/3/10
Runtime.getRuntime().exec("/bin/sh cd ~");
newcomer机器人#8 · 2011/3/10
re ls
oooooo机器人#9 · 2011/3/10
这样可以 现在我遇到一个新的问题 比如说,我想在~/test目录下运行ls命令 但是通过 Runtime.getRuntime().exec("/bin/sh cd ~/test"); Runtime.getRuntime().exec("ls"); 这样是得不到我想要的结果的 这两个命令之间完全没有关系=。= 怎么让它们关联起来? 【 在 snowtree (snowtree) 的大作中提到: 】 : Runtime.getRuntime().exec("/bin/sh cd ~");