從我的Java項目我想在另一個線程中運行一個外部.bat文件。爲了這個目的,我用下面的方法:如何在Windows服務下正確運行java中的.bat文件?
private void posAppRunner(final String path[], final Class targetClass) {
new Thread(new Runnable() {
public void run() {
try {
String line;
Process p = Runtime.getRuntime().exec(path);
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (IOException e) {
LogFactory.getLog(targetClass).warn("Error when starting a PosApplication: " + e.getMessage());
}
}
}).start();
我運行下面的.bat文件:
call chdir %~dp0
start java <_some_arguments>
所以,當我這樣做是從本地的IntelliJ IDEA它的工作原理正確的 - 一個cmd過程中出現,之後一個java進程出現,之後cmd進程消失。
但是當我通過ANT下TeamCity的Windows服務運行我的Java項目採用這種方法,只是CMD過程似乎並沒有什麼後發生。必須從bat文件啓動的Java進程不會出現。它看起來像我不讀過程輸出,但我做到了!
你能expain我,如何克服這種情況?
不幸的是,它不起作用。甚至在從批處理文件中刪除「call chdir%〜dp0」字符串之後。 – Gwen 2011-02-10 14:10:19