2013-10-10 6 views
5

अनुसंधान के एक बहुत कर रही है और यह भी अनुसंधान के बाद मेरे कोड में यह लागू करने के बाद यह सवाल पूछ रहा हूँ, लेकिन मैं वास्तव में FileNotFoundException.What यहाँ कर रहा हूँ के साथ समाप्त हो गया मैं अपने जावा में hardcoding से बचना चाहते हैं है कोड इसलिए एक गुण फ़ाइल को Constants.properties के नाम से बना रहा हूं और इसे अपने जावा कोड में कॉल कर रहा हूं। लेकिन यह कहता है कि यह फ़ाइल नहीं ढूंढ रहा है। मेरी गुण फ़ाइल प्रोजेक्ट के src फ़ोल्डर में है। नीचे कोड स्निपेट है। कोई सुझाव?FileNotFoundException जब जावा गुण का उपयोग कर फ़ाइल

गुण फ़ाइल:

executable.run = C:\\server\\lrd.exe 
incoming.file = C:\\file\\test.ic 
executable.params1 = -z 
executable.params2 = -a[+] 
log.file = C:\\TESTFile\\test.txt 

जावा कोड: यह जो है गुण विवरण दाखिल वर्ग फ़ाइल है।

public class PropInfo { 
    static private PropInfo _instance = null; 
    public String executable = null; 
    public String filein = null; 
    public String params1 = null; 
    public String params2 = null; 
    public String log = null; 

    protected PropInfo(){ 
     try{ 
      InputStream file = new FileInputStream(new File("Constants.properties")); 
      Properties props = new Properties(); 
      props.load(file); 
      executable = props.getProperty("executable.run"); 
      filein = props.getProperty("incomin.file"); 
      params1 = props.getProperty("executable.params1"); 
      params2 = props.getProperty("executable.params2"); 
      log = props.getProperty("log.file"); 
     } 
     catch(Exception e){ 
      System.out.println("error" + e); 
     }  
    } 

    static public PropInfo instance(){ 
     if(_instance == null){ 
      _instance = new PropInfo(); 
     } 
     return _instance; 
    } 
} 

मुख्य वर्ग:

errorjava.io.FileNotFoundException: Constants.properties (The system cannot find the 
file specified) 
java.io.IOException: Cannot run program "null": CreateProcess error=2, The system 
cannot find the file specified 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1042) 
at java.lang.Runtime.exec(Runtime.java:615) 
at java.lang.Runtime.exec(Runtime.java:448) 
at java.lang.Runtime.exec(Runtime.java:345) 
at com.emc.clp.license.StartTest.main(StartTest.java:44) 
Caused by: java.io.IOException: CreateProcess error=2, The system cannot find the 
file  specified 
at java.lang.ProcessImpl.create(Native Method) 
at java.lang.ProcessImpl.<init>(ProcessImpl.java:288) 
at java.lang.ProcessImpl.start(ProcessImpl.java:133) 
at java.lang.ProcessBuilder.start(ProcessBuilder.java:1023) 
... 4 more 
+0

जो लाइन में अपवाद हो रहा है? –

+0

@JavaDevil: अपवाद प्रक्रिया जनसंपर्क = rt.exec (connString) पर उत्पन्न की है, – user2821894

+0

कृपया अपवाद स्टैक ट्रेस पोस्ट करें। –

उत्तर

12

अपने गुण हाँ, डाल नहीं src फ़ोल्डर में फाइल:

try{ 
    PropInfo propinfo = PropInfo.instance(); 
    String connString = propinfo.executable + " " + propinfo.params1 + " " + 
      propinfo.filein + " " + propinfo.params2 + " " + " " + propinfo.log ; 

    Runtime rt = Runtime.getRuntime(); 
    // Process pr = rt.exec 
    // (PropInfo.executable+" "+PropInfo.params1+" "+PropInfo.filein+" " 
    //+PropInfo.params2+" "+PropInfo.log); 
    Process pr = rt.exec(connString); 

    BufferedReader input = new BufferedReader(new InputStreamReader (pr.getInputStream())); 

    String line=null; 
    StringBuffer start= new StringBuffer(); 
    while((line=input.readLine()) != null) { 
     start.append("Started" + line + "\n"); 
     System.out.println(line); 
    } 

    // System.out.println("browse"); 

} 
catch (Throwable t) 
{ 
    t.printStackTrace(); 
} 
finally 
{ 
} 

इस अपवाद देता है। इसे रखो जहां से आप jvm शुरू करते हैं (या एक पूर्ण पथ प्रदान करते हैं)। इसके अलावा मैं वास्तव में पथ नामों में आगे की धड़कन से छुटकारा पाने का सुझाव देता हूं।

अद्यतन: इस जोड़े पता लगाने के लिए जहां अपनी फ़ाइल डाल करने के लिए:

System.out.println(new File(".").getAbsolutePath()); 
+0

मैं पैकेज में डालने जहां मुख्य वर्ग मौजूद है, लेकिन अभी भी वही अपवाद की कोशिश की। – user2821894

+0

मुख्य वर्ग (जावा फ़ाइल) या मुख्य वर्ग। क्लास फ़ाइल? – Axel

+0

यह उसी पैकेज में है जहां मेरी जावा फ़ाइल है। – user2821894

3

जिस तरह से आप लोड Constants.properties यह स्तर जहाँ आपके पैकेजिंग शुरू होता है पर सही अपने src पैकेज पैकेज के तहत होना चाहिए।

उदाहरण के लिए

,

यदि आप टैग src/जावा/propinfopackage/PropInfo

जावा फ़ोल्डर के अंदर डाल दिया और इसे कहते हैं

InputStream propertiesInputStream = null; 
       Properties properties = new Properties(); 
       propertiesInputStream = PropInfo.class.getClassLoader().getResourceAsStream("/Constants.properties"); 
       properties.load(propertiesInputStream); 
    String value = properties.getProperty("executable.run"); 
....... 
1

इस प्रकार मैं एक ही समस्या थी और यह था इस तरह हल किया गया:

Properties prop = new Properties(); 
try { 
    prop.load(getClass().getResourceAsStream("/com/my/package/Constants.properties"));//here your src folder 
    System.out.println(prop.getProperty("executable.run")); 

} catch(IOException e) {} 
0

सुनिश्चित करें कि आपकी गुण फ़ाइल टी के रूट पथ में है वह प्रोजेक्ट। प्रोजेक्ट पर राइट क्लिक करें और गुण फ़ाइल पेस्ट करें। आपकी त्रुटि जाएगी।

इसके अलावा @Axel ऊपर उत्तर देखें। यह आपकी समस्या का समाधान करेगा।

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