我试图在Java应用程序中运行Linux命令作为SpringFramework(MVC模式)。我需要在Ubuntu服务器上运行一个shell脚本文件。所以我编码如下: 以java方式运行java Application。
public static void connectServcer(){
String host="xxx.xxx.xxx.xxx";
String user="id";
String password="pw";
String[] command = {
"sh"
, "/usr/local/bin/runShell.sh"
};
System.out.println("cmd run");
try{
java.util.Properties config = new java.util.Properties();
config.put("StrictHostKeyChecking", "no");
JSch jsch = new JSch();
Session session=jsch.getSession(user, host, 22);
session.setPassword(password);
session.setConfig(config);
session.connect();
System.out.println("Connected");
Runtime r = Runtime.getRuntime();
com.jcraft.jsch.Channel channel=session.openChannel("exec");
Process process = r.exec(command);
process.getInputStream();
channel.setInputStream(null);
((ChannelExec)channel).setErrStream(System.err);
InputStream in=channel.getInputStream();
channel.connect();
byte[] tmp=new byte[1024];
while(true){
while(in.available()>0){
int i=in.read(tmp, 0, 1024);
if(i<0)break;
System.out.print(new String(tmp, 0, i));
}
if(channel.isClosed()){
System.out.println("exit-status: "+channel.getExitStatus());
break;
}
try{Thread.sleep(1000);}catch(Exception ee){}
}
channel.disconnect();
session.disconnect();
System.out.println("DONE");
}catch(Exception e){
e.printStackTrace();
}
}
但是这个方法返回错误:
cmd run
Connected
java.io.IOException: Cannot run program "sh": CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1048)
at java.lang.Runtime.exec(Runtime.java:620)
at java.lang.Runtime.exec(Runtime.java:485)
at com.company.utils.Linux.connectServcer(Linux.java:59)
at com.company.utils.Linux.main(Linux.java:9)
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the file specified
at java.lang.ProcessImpl.create(Native Method)
at java.lang.ProcessImpl.<init>(ProcessImpl.java:386)
at java.lang.ProcessImpl.start(ProcessImpl.java:137)
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1029)
... 4 more
任何人都可以帮助我吗?我搜索并了解了登录并将其编码了一周,我是java的初学者。