我有一个applet,从applet开始在Windows上运行一些进程。 当我从另一个代码(测试)开始此过程时,此代码工作正常,并且进程从rt.exec()运行到proc.destroy()。 当我使用html调用applet时 - 进程每次只运行5秒(!!!)然后只运行,但不起作用,proc.destroy()。这对我来说非常有趣(applet中的新手)。我想,这个问题是由AccessController引起的。请帮我解决这个问题(通常运行过程超过5秒)!提前致谢。
P.S。我使用Windows,中型Java安全杠杆和applet是自签名的。它要求我'允许',applet工作。
以下是代码:
public String startRecording(final String filename) throws IOException {
try {
return (String) AccessController
.doPrivileged(new PrivilegedAction<String>() {
public String run() {
try {
proc = Runtime
.getRuntime()
.exec(cmd + filename + "." + config.getFormat());
//proc.waitFor();
return "Ffmpeg process started";
} catch (Exception e) {
// TODO Auto-generated catch block
return e.getMessage();
}
}
});
} catch (Exception e) {
return e.getMessage();
}
}
在这里停止方法
public void stopRecording() {
proc.destroy();
}
编辑1: 它是FFMPEG进程,它记录桌面视频并将其写入文件,也许AccessController阻止访问文件系统。
答案 0 :(得分:0)
您需要处理I / O流。只需将错误(如果是ffmpeg)重定向到文件。这解决了问题(但不知道为什么:))。