दिलचस्प पोस्ट
जावा में ResultSet का उपयोग कर पंक्ति संख्या कैसे प्राप्त करें? jockery-yui datepicker के साथ knockoutjs डेटाबेंडर बैकवर्ड संगतता एंड्रॉइड के साथ नेविगेशन ड्रॉवर एनएलटीके के साथ एक नया कॉर्पस बनाना सी # में कौन से ऑपरेशन परमाणु हैं? HTTP शीर्षलेख के लिए मुझे किस एन्कोडिंग का उपयोग करना चाहिए? रिकर्सिव शामिल करने और एकाधिक प्रतीकों की परिभाषाओं को रोकने में क्यों शामिल नहीं हैं? स्विफ्ट में दृश्य नियंत्रकों और अन्य ऑब्जेक्ट्स के बीच डेटा कैसे साझा करते हैं? स्ट्रिंग में वर्णों को कैसे फेर लेना जावा में जनरेट क्या हैं? एसएसई निर्देश: कौन सी CPU परमाणु 16 बी मेमोरी संचालन कर सकता है? रिलीज कॉम ऑब्जेक्ट बनाम फाइनलरेलीकॉम ऑब्जेक्ट का उपयोग कब किया जाए? 'माइक्रोसॉफ्ट.एसीई। ओएलईडीबी .12.0' प्रदाता स्थानीय मशीन पर पंजीकृत नहीं है, जबकि एमएस एक्सेस के लिए डाटा निर्यात PHP और JQuery के साथ एकाधिक फ़ाइलें अपलोड करें एक सीएसवी फ़ाइल से एक शब्दकोश बनाना?

JAR फ़ाइल के बाहर गुण फ़ाइल पढ़ें

मेरे पास एक JAR फ़ाइल है जहां मेरे सभी कोड को चलाने के लिए संग्रहीत किया गया है। मुझे एक प्रॉपर्टी फाइल का उपयोग करना होगा जो प्रत्येक रन से पहले परिवर्तित / संपादन की आवश्यकता होती है। मैं गुण फाइल को एक ही निर्देशिका में रखना चाहता हूं जहां JAR फ़ाइल है। वैसे भी जावा को उस निर्देशिका से गुण फ़ाइल लेने के लिए कहने के लिए क्या है?

नोट: मैं गुण फ़ाइल को होम डाइरेक्टरी में रखना नहीं चाहती या कमांड लाइन तर्क में गुण फ़ाइल के पथ को पारित नहीं करना चाहता।

वेब के समाधान से एकत्रित समाधान "JAR फ़ाइल के बाहर गुण फ़ाइल पढ़ें"

इसलिए, आप मुख्य / रननबल जार के संसाधन के रूप में एक फ़ाइल के रूप में एक ही फ़ोल्डर पर अपने .properties फ़ाइल का इलाज करना चाहते हैं। उस मामले में, मेरा अपना समाधान इस प्रकार है:

पहली बात पहले: आपकी प्रोग्राम फ़ाइल वास्तुकला इस तरह होगी (यह मानकर कि आपका मुख्य कार्यक्रम main.jar है और इसका मुख्य गुण है main.properties):

 ./ - the root of your program |__ main.jar |__ main.properties 

इस आर्किटेक्चर के साथ, आप main.properties फ़ाइल में किसी भी प्रॉपर्टी को संशोधित कर सकते हैं या इससे पहले कि आपका मुख्य.जर चल रहा है (प्रोग्राम की वर्तमान स्थिति के आधार पर), क्योंकि यह सिर्फ एक टेक्स्ट-आधारित फ़ाइल है। उदाहरण के लिए, आपके मुख्य प्रॉपर्टीज़ में हो सकता है:

 app.version=1.0.0.0 app.name=Hello 

इसलिए, जब आप अपने मुख्य प्रोग्राम को रूट / बेस फ़ोल्डर से चलाते हैं, तो आप इसे इस तरह चलाएंगे:

 java -jar ./main.jar 

या, सीधे:

 java -jar main.jar 

आपके मुख्य.जर में, आपको अपने मुख्य। प्रॉपर्टी फाइल में मिली प्रत्येक प्रॉपर्टी के लिए कुछ उपयोगिता विधियां बनाने की आवश्यकता है; app.version लें कि app.version प्रॉपर्टी को getAppVersion() विधि निम्नानुसार होगी:

 /** * Gets the app.version property value from * the ./main.properties file of the base folder * * @return app.version string * @throws IOException */ public static String getAppVersion() throws IOException{ String versionString = null; //to load application's properties, we use this class Properties mainProperties = new Properties(); FileInputStream file; //the base folder is ./, the root of the main.properties file String path = "./main.properties"; //load the file handle for main.properties file = new FileInputStream(path); //load all the properties from this file mainProperties.load(file); //we have loaded the properties, so close the file handle file.close(); //retrieve the property we are intrested, the app.version versionString = mainProperties.getProperty("app.version"); return versionString; } 

मुख्य कार्यक्रम के किसी भी भाग में जिसे app.versionapp.version वैल्यू की आवश्यकता होती है, हम इसके तरीके को निम्न प्रकार कहते हैं:

 String version = null; try{ version = getAppVersion(); } catch (IOException ioe){ ioe.printStackTrace(); } 

मैंने इसे दूसरे तरीके से किया था

 Properties prop = new Properties(); try { File jarPath=new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().getPath()); String propertiesPath=jarPath.getParentFile().getAbsolutePath(); System.out.println(" propertiesPath-"+propertiesPath); prop.load(new FileInputStream(propertiesPath+"/importer.properties")); } catch (IOException e1) { e1.printStackTrace(); } 
  1. जार फ़ाइल पथ प्राप्त करें
  2. उस फ़ाइल के मूल फ़ोल्डर को प्राप्त करें
  3. InputStreamPath में अपने गुण फ़ाइल नाम के साथ उस पथ का उपयोग करें।

एक जार फ़ाइल से आपकी फ़ाइल निर्देशिका में फ़ाइलों तक पहुंचने में हमेशा एक समस्या होती है। एक जार फ़ाइल में क्लासपाथ प्रदान करना बहुत सीमित है। इसके बजाय अपने प्रोग्राम को प्रारंभ करने के लिए एक बैट फ़ाइल या श फ़ाइल का उपयोग करने की कोशिश करें। इस तरह से आप अपनी क्लासपाथ किसी भी तरह से निर्दिष्ट कर सकते हैं, सिस्टम पर कहीं भी किसी फ़ोल्डर को संदर्भित कर सकते हैं।

इस प्रश्न पर अपना जवाब भी देखें:

जावा परियोजना के लिए sqlite युक्त .exe फ़ाइल बनाने

मेरे पास एक समान मामला है: मेरी *.jar फ़ाइल को एक निर्देशिका में एक फाइल में प्रवेश करने के लिए *.jar फाइल के बगल में। इस उत्तर के रूप में अच्छी तरह से देखें

मेरी फ़ाइल संरचना है:

 ./ - the root of your program |__ *.jar |__ dir-next-to-jar/some.txt 

मैं एक फ़ाइल लोड करने में सक्षम हूं (कहते हैं, कुछ। some.txt ) some.txt अंदर *.jar फ़ाइल के अंदर निम्न के साथ:

 InputStream stream = null; try{ stream = ThisClassName.class.getClass().getResourceAsStream("/dir-next-to-jar/some.txt"); } catch(Exception e) { System.out.print("error file to stream: "); System.out.println(e.getMessage()); } 

फिर जो भी आप stream साथ करेंगे