समाप्त नहीं कर रहा है मैं जावा से विंडोज पर एक प्रक्रिया बना रहा हूं। मेरी समस्या यह है कि यह प्रक्रिया समाप्त नहीं होती है। यहां एक नमूना कार्यक्रम है:जावा से निष्पादित विंडोज प्रक्रिया
import java.io.IOException;
public class Test {
/**
* @param args
* @throws IOException
* @throws InterruptedException
*/
public static void main(String[] args) throws IOException,
InterruptedException {
Process process = Runtime.getRuntime().exec("cmd /c dir");
process.waitFor();
}
}
मेरी समझ से परे कारणों के लिए, यह प्रोग्राम कभी पूरा नहीं होता है। यह सच है अगर "cmd/c dir" ipconfig के साथ-साथ अन्य चीजों के साथ प्रतिस्थापित किया गया है।
मैं प्रोसेसएक्सप्लोरर का उपयोग करके देख सकता हूं कि जावा सीएमडी प्रक्रिया बनाता है। यह नमूना स्पष्ट रूप से एक सरलीकरण है; मेरे मूल कार्यक्रम में मैंने पाया कि अगर मैं थोड़ी देर बाद process.destroy() को कॉल करता हूं और cmd प्रक्रिया आउटपुट की जांच करता हूं, तो कमांड को सफलतापूर्वक निष्पादित किया जाता है।
मैंने जावा 1.5 और 1.6 के विभिन्न रिलीज़ के साथ यह कोशिश की है। मेरा ओएस विंडोज एक्सपी प्रो, एसपी 2.
+1 तर्क गुजरने की समस्या को पकड़ने के लिए भी +1। –
आप पूरी तरह से सही नहीं हैं। निष्पादन (स्ट्रिंग) के लिए एपीआई दस्तावेज़ बताते हैं कि "सिस्टम कमांड" की किसी भी करीबी परिभाषा के बिना तर्क "सिस्टम कमांड" है। यह असंभव नहीं है कि JVM बस cmd.exe को स्ट्रिंग पास करता है। – JesperE
उत्तर और लिंक के लिए धन्यवाद! मुझे रविवार को समस्याग्रस्त मशीन पर इसे जांचने का मौका होना चाहिए। दरअसल, तर्क सही ढंग से पारित होते हैं; मैं उन्हें प्रोसेस एक्सप्लोरर में देख सकता हूं। –