0

我正在尝试从轴 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 日志中知道它根本不会被执行。

4

1 回答 1

0

我会首先在轴外测试这个类的功能,看看它是否有效。
由于您有一个“bat”文件,我假设我们正在谈论 Windows 中的批处理文件。在这种情况下,ProcessBuilder 应该在构造函数中具有“cmd /c start parse.bat”。请在此处查看完整说明。

于 2012-12-12T21:57:34.153 回答