2012-10-15 13 views
7

मैं Runtime.getrunTime का उपयोग कर एक और जावा कार्यक्रम से एक जावा प्रोग्राम चलाने के लिए कोशिश कर रहा हूँ() execjava.io.IOException:। त्रुटि = 2, इस तरह के कोई फ़ाइल या निर्देशिका

कोड:

String java_home = System.getenv("JAVA_HOME"); 
String[] command = {""+java_home+"/bin/java -cp -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopO "}; 
       try { 
        proc = Runtime.getRuntime().exec(command); 
        proc.waitFor(); 
        int exitCode = proc.exitValue(); 
       } catch (IOException e) { 
         e.printStackTrace(); 
       } catch (InterruptedException e) { 
         e.printStackTrace(); 
       } 

java.io.IOException: Cannot run program "/net/sl/sc/jdk6/bin/java -cp /sc/sug/p-lib/* Tdesigner -cd /pr -in ing.rsp -out /scratch/sug/ng.pla -ad -stopOnError ": java.io.IOException: error=2, No such file or directory 
      at java.lang.ProcessBuilder.start(ProcessBuilder.java:460) 
      at java.lang.Runtime.exec(Runtime.java:593) 
      at java.lang.Runtime.exec(Runtime.java:466) 

किसी को भी मुझे इस मुद्दे को हल करने के लिए मदद कर सकते हैं:

यह मुझे निम्न त्रुटि देता है। क्या यह है कि मुझे निर्देशिका सेट करने के बजाय अलग-अलग जार फ़ाइलों को -cp जोड़ने की आवश्यकता है।

उत्तर

2

यदि आप exec (स्ट्रिंग []) का उपयोग करते हैं तो आपको कमांड तत्वों में कमांड और उसके तर्क प्रदान करना होगा, जैसा कि आपने किया है उतना ही नहीं।

+0

स्ट्रिंग [] कमांड = {"" + java_home + "/ bin/java -cp/sc/sug/p-lib/* tdesigner", "-cd", "/ pr", "-in", "ing .rsp "," -out "," /scratch/sug/ng.pla "," - विज्ञापन "," -स्टॉपो "}; कमांड को संशोधित करने के लिए अभी भी वही त्रुटि मिलती है। :( – user1731553

+1

आपके पास अभी भी जावा-सीपी/एससी /.../* टीडीएसइग्नेर सभी एक स्ट्रिंग के रूप में है, इसे अलग करने की आवश्यकता है। अन्यथा जावा को कॉल करने और इसे तर्क देने के बजाय - सीपी इत्यादि, आप * जावा-सीपी/एससी/नामक एक प्रोग्राम * चलाने की कोशिश कर रहे हैं ... –

3

अतिरिक्त -cp कमांड स्ट्रिंग सरणी से निकालने का प्रयास करें और सरणी में अलग-अलग टोकन का उपयोग:

String[] command = { java_home + "/bin/java", "-cp", 
    "/sc/sug/p-lib/*", "Tdesigner", "-cd", "/pr", "-in", "ing.rsp", 
    "-out", "/scratch/sug/ng.pla", "-ad", "-stopO" }; 
0

मैं स्केला का उपयोग करें। यहां मेरा कोड है:

Runtime.getRuntime.exec(Array("/bin/bash", "-c", #your_command)).waitFor() 

मुझे लगता है कि जावा का उपयोग करने वाले अन्य लोगों के लिए यह समझना आसान है।

संबंधित मुद्दे

 संबंधित मुद्दे