2012-06-08 14 views
8

का उपयोग कर मैं निम्नलिखित कोड का उपयोग करके खिड़कियों में अध्यक्ष एवं प्रबंध निदेशक आवेदन शुरू करने के लिए कोशिश कर रहा हूँ, लेकिन यह अपेक्षा के अनुरूप काम नहीं करता है। विभिन्न वेबसाइटों के कई उदाहरण बताते हैं कि प्रोसेसबिल्डर निर्माण में एक तर्क के रूप में "cmd" काम करना चाहिए।प्रारंभ सीएमडी ProcessBuilder

मुझे अपने जावा एप्लिकेशन विंडो में अध्यक्ष एवं प्रबंध निदेशक अनुप्रयोग खोलें बनाने के लिए क्या करना होगा?

public class JavaTest 
{ 
    public static void main(String[] args) 
    { 
     ProcessBuilder pb = new ProcessBuilder("cmd"); 

     try 
     { 
      pb.start(); 
      System.out.println("cmd started"); 
     } 
     catch (IOException e) 
     { 
      System.out.println(e.getMessage()); 
     } 
    } 
} 

जब मैं तो मतलब है कि यह वास्तव में "सीएमडी" चलाता है, गैर-मौजूद आवेदन यह वास्तव में एक त्रुटि बाहर प्रिंट उपयोग करने के लिए प्रयास करें। लेकिन सीएमडी आवेदन अपेक्षित के रूप में पॉप अप नहीं करता है?

+1

आप अपने ऑटो मैकेनिक बुलाया और कहा "मेरी कार काम नहीं करता है", तो उसका पहला सवाल क्या होगा? अगर आप हमें नहीं बताते कि त्रुटि संदेश क्या था, तो आप किसी भी मदद की उम्मीद कैसे करते हैं? –

+2

एक फैंसी टिप्पणी के साथ कूदने से पहले, ओपी क्या कहता है पढ़ने की कोशिश करें। इसका मतलब है कि यह वास्तव में "सीएमडी" चलाता है। लेकिन अध्यक्ष एवं प्रबंध निदेशक आवेदन पॉप अप नहीं करता है के रूप में उम्मीद _ –

उत्तर

7

आप start आदेश का उपयोग करने की आवश्यकता है। वास्तव में, यहां तक ​​कि मैं एक नया कमांड प्रॉम्प्ट पॉपिंग नहीं दिख रहा है, लेकिन आप जाँच कर सकते हैं अपने task manager का उपयोग कर कि एक नया cmd.exe निश्चित रूप से शुरू कर दिया है।

ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start"); 

हालांकि, एक ही कार्यक्षमता Runtime.exec() का प्रयोग कर प्राप्त किया जा सकता है, और यह वास्तव में एक नया कमांड प्रॉम्प्ट दिखाई नहीं देता।

Runtime.getRuntime().exec("cmd.exe /C start"); 
+0

अपेक्षा के अनुरूप ProcessBuilder काम नहीं करता है (जो मैं बहुत, बहुत अजीब लगता है) - लेकिन "कार्यकारी()" विधि काम करता है। धन्यवाद! – Birdman

+0

स्ट्रिंग [] cmd = नया स्ट्रिंग [] {"cmd.exe", "/ सी", "स्टार्ट"}; प्रोसेसबिल्डर पीबी = नई प्रोसेसबिल्डर (सेमीडी); प्रक्रिया प्रक्रिया = pb.start(); – user77115

+0

मैं नहीं जानता/क्या मतलब सी, यह सी ड्राइव के रास्ते – john

12

ProcessBuilder के साथ उपयोग करने के लिए आप इस तरह आदेशों को अलग करना होगा:

final List<String> commands = new ArrayList<String>();     

commands.add("cmd.exe"); 
commands.add("/C"); 
commands.add("start"); 
ProcessBuilder pb = new ProcessBuilder(commands); 
pb.start(); 
संबंधित मुद्दे