已经有一个 7 岁的问题,标题相似,但没有接受的答案,因此重新发布,因为我的问题有更多细节。
7 岁的问题: 使用 Procrun 从注册为 Windows 服务的 Java 运行批处理文件
我的问题:
我有以下java类:
public static void main(String[] args) {
ProcessBuilder processBuilder = new ProcessBuilder(new String[] {"C:\\Work\\test.bat"});
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
int exitVal = process.waitFor();
}
当这是直接从eclipse运行时,test.bat成功执行。但是,当它从服务运行时,test.bat不会被执行。
我已经使用 procrun 将 jar 安装为 Windows 服务。还要验证是否正确安装了服务。我这样做了:
public static void main(String[] args)
{
try {
DateFormat formatter = new SimpleDateFormat("dd/MM/yyyy hh:mm:ss");
Calendar calendar = Calendar.getInstance();
calendar.setTimeInMillis(System.currentTimeMillis());
File file = new File("C:\\Work\\temp.txt");
FileUtils.writeStringToFile(file, "hello world "+formatter.format(calendar.getTime()), "UTF-8", false);
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
并且这段代码可以毫无问题地从服务中执行。只是 test.bat 没有被执行。
ProcessBuilder不允许从 procrun 吗?
编辑
我的test.bat:
start "" cmd /c "echo Hello world!&echo(&pause"