हम क्योंकि कमांडलाइन पता करने के लिए जो पहला तर्क है, जो दूसरे और इतने पर है की जरूरत है कमांडलाइन में बहस के बीच रिक्त स्थान की जरूरत है। हालांकि जब हम ProcessBuilder
का उपयोग करते हैं, तो हम इसे एक सरणी पास कर सकते हैं, इसलिए हमें तर्कों को अलग करने के लिए उन रिक्त स्थान को जोड़ने की आवश्यकता नहीं है। कुछ जांच के बाद ProcessBuilder सीधे कमांड सरणी को exec
पर पास कर देगा। उदाहरण के लिए,
private static final String JAVA_CMD = "java";
private static final String CP = "-cp";
private static final String CLASS_PATH = "../bin";
private static final String PROG = "yr12.m07.b.Test";
private static final String[] CMD_ARRAY = { JAVA_CMD, CP, CLASS_PATH, PROG };
ProcessBuilder processBuilder = new ProcessBuilder(CMD_ARRAY);
उपरोक्त कोड पूरी तरह से काम करेगा।
इसके अलावा, आप
Runtime.getRuntime().exec("java -cp C:/testt Test");
उपयोग कर सकते हैं लेकिन यह अधिक ProcessBuilder उपयोग करने के लिए सुविधाजनक है, एक कारण यह है कि हमारे तर्क स्थान शामिल हैं अगर हम java -cp C:/testt \"argument with space\"
तरह Runtime.getRuntime().exec()
में बोली उत्तीर्ण करने की आवश्यकता है, लेकिन ProcessBuilder के साथ हम प्राप्त कर सकते हैं इससे छुटकारा पाना।
ProcessBuilder processBuilder = new ProcessBuilder("command", "The first argument", "TheSecondWithoutSpace");
आप एक अच्छा काम किया था – darijan