我正在尝试从一个轴Web服务中启动一个应用程序,但我无法理解我做错了什么。 我用来生成web服务的类是:
public class Esecutore {
public String esegui(){
try {
ProcessBuilder builder=new ProcessBuilder("parser.bat");
builder.redirectErrorStream(true);
Process pr;
pr = builder.start();
InputStream stdout=pr.getInputStream();
OutputStream stdin=pr.getOutputStream();
BufferedReader br=new BufferedReader(new InputStreamReader(stdout));
BufferedWriter bw=new BufferedWriter(new OutputStreamWriter(stdin));
String line = br.readLine();
while(line!=null){
line=br.readLine();
}
int termine=pr.waitFor();
if(termine!=0){
return "errore nell'inserimento";
}
return "finito";
} catch (IOException e) {
// TODO Auto-generated catch block
return "errore: "+e.getMessage();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
return "errore: "+e.getMessage();
}
}
}
当我从命令行执行批处理文件时,批处理文件正常工作,它只是启动一个不需要任何输入的.jar。但是,我可以看到,当我通过此代码执行它时,它具有不同于0的退出状态,并且由于.jar应该写入数据库,我也从db日志中知道它根本不会被执行。
答案 0 :(得分:0)
我首先在轴外测试这个类功能,看它是否有效。
因为你有一个' bat'文件,我假设我们正在讨论Windows中的批处理文件。在这种情况下,ProcessBuilder应该在构造函数" cmd / c start parse.bat"中。请参阅here完整说明。