खत्म करने के लिए अपने जावा प्रोग्राम में प्रतीक्षा कर रहा है, मैं एक प्रक्रिया है कि एक कमांड निष्पादित करता है इस तरह की एक बैच फ़ाइल को चलाने के लिए बनाने के लिए:जावा से एक कमांड को क्रियान्वित और कमान
try {
File tempFile = new File("C:/Users/Public/temp.cmd");
tempFile.createNewFile();
tempFile.deleteOnExit();
setContents(tempFile, recipe.getText()); //Writes some user input to file
String cmd = "cmd /c start " + tempFile.getPath();
Process p = Runtime.getRuntime().exec(cmd);
int exitVal = p.waitFor();
refreshActionPerformed(evt);
} catch (InterruptedException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
} catch (IOException ex) {
Logger.getLogger(mainFrame.class.getName()).log(Level.SEVERE, null, ex);
}
अब, मैं करना चाहते हैं ऐसा हुआ है कि
refreshActionPerformed(evt);
केवल बैच फ़ाइल के बाद ही चलाया जाता है जिसे मैंने निष्पादित कर दिया है। लेकिन अभी, कमांड प्रॉम्प्ट खुलने के तुरंत बाद यह चलता है।
मैं इसे कैसे ठीक करूं?
पढ़ सकते हैं और लागू * सभी * की सलाह [जब Runtime.exec() नहीं होगा] (http://www.javaworld.com/javaworld/jw-12-2000/jw- के लिए सुनिश्चित करें 1229-traps.html)। अन्यथा आप निश्चित रूप से "नहीं करेंगे" का अनुभव करेंगे। 1.5+ के लिए 'प्रोसेसबिल्डर' का उपयोग करने और तर्कों को सरणी के रूप में पास करने पर भी विचार करें। –
मैंने पढ़ा जब Runtime.exec() नहीं होगा, लेकिन स्पष्ट रूप से, मैं जावा प्रोग्रामिंग के लिए बिल्कुल नया हूं और मुझे नहीं पता कि उस लेख की सलाह को कैसे कार्यान्वित किया जाए। –