दिलचस्प पोस्ट
उन्हें बंद करने के बाद stdout और stdin फ़ाइल डिस्क्रिप्टर पुन: खोलना हस्ताक्षरित / अहस्ताक्षरित चार में अंतर UIWebView का उपयोग करके HTML कोड से उद्देश्य सी कोड में विधि डालें दो तिथियां एक ही तारीख जानकारी है अगर जाँच इस तरह से एक पुन: प्रयास करने योग्य कॉल को लागू करने के लिए स्काला तरीका क्या है? C ++ वैश्विक प्रारंभिक आदेश निर्भरताओं पर ध्यान नहीं देता? बूटस्ट्रैप 3 गटर आकार ऐप गैलरी में ऐप गैलरी को अनुकूलित करें अमान्य सीएसएस चयनकर्ता को गिरा दिया जाने वाला नियम बनता है: तर्क क्या है? ट्विटर बूटस्ट्रैप सूचना संदेश बंद करें और फिर से खोलें निर्धारित अनुभाग हेडर के साथ UITableView क्या हस्ताक्षरित इंटिजर्स पर बिटवर्ड ऑपरेशन के परिणाम परिभाषित किए गए हैं? NSInteger बनाम int का उपयोग कब करना ब्रेक समानांतर। अजगर के मल्टीप्रोसेसिंग पूल के साथ कीबोर्ड इंटरप्ट

GetClass () का उपयोग कर संसाधन लोड हो रहा है। GetResource ()

मैं अपने आवेदन में एक आइकन के रूप में उपयोग करने के लिए एक छवि लोड करने का प्रयास कर रहा हूं। इस ट्यूटोरियल के अनुसार उचित विधि है:

protected ImageIcon createImageIcon(String path, String description) { java.net.URL imgURL = getClass().getResource(path); if (imgURL != null) { return new ImageIcon(imgURL, description); } else { System.err.println("Couldn't find file: " + path); return null; } } 

इसलिए, मैंने फाइल के स्थान को रखा और इसे इस फ़ंक्शन के पैरामीटर के रूप में पास किया। यह काम नहीं कर रहा था, यानी आईएमआईपीआरएल शून्य था। जब मैंने स्पष्ट रूप से पथ में गुजरकर इमेचिक्स बनाने की कोशिश की:

 ImageIcon icon = new ImageIcon(path,"My Icon Image"); 

यह महान काम किया! इसलिए एप्लिकेशन एक स्पष्ट रूप से परिभाषित पथ से छवि को चुन सकता है, लेकिन getResources () का उपयोग करते हुए छवि को नहीं उठाया। दोनों ही मामलों में, पथ वैरिएबल का मान एक ही है यह काम क्यों नहीं करेगा? क्लास लोडर द्वारा कैसे मिले संसाधन हैं?

धन्यवाद।

Solutions Collecting From Web of "GetClass () का उपयोग कर संसाधन लोड हो रहा है। GetResource ()"

आप इस प्रारूप में एक पथ पूछ सकते हैं:

 /package/path/to/the/resource.ext 

यहां तक ​​कि स्मृति में वर्ग बनाने के लिए बाइट इस तरह से पाए जाते हैं:

 my.Class -> /my/Class.class 

और getResource आपको एक यूआरएल देगा जो इनपुटस्ट्रीम को पुनः प्राप्त करने के लिए इस्तेमाल किया जा सकता है।

लेकिन … मैं सीधे getClass().getResourceAsStream(...) का सुझाव देता हूं getClass().getResourceAsStream(...) एक ही तर्क के साथ, क्योंकि यह सीधे InputStream देता है और एक (शायद जटिल) URL ऑब्जेक्ट बनाने के बारे में चिंता करने की ज़रूरत नहीं है कैसे InputStream बनाने के लिए पता है

संक्षेप में: GetResourceAsstream और ImageIcon के कुछ निर्माता का उपयोग करने का प्रयास करें जो इनपुटस्ट्रीम को तर्क के रूप में उपयोग करते हैं।

Classloaders

सावधान रहें कि आपके ऐप में कई क्लासलोडर्स हैं यदि आपके पास एक सरल स्टैंडअलोन आवेदन (कोई सर्वर या जटिल चीजें नहीं हैं) तो आपको चिंता नहीं करनी चाहिए। मुझे नहीं लगता कि यह मामला प्रदान किया गया है ImageIcon इसे ढूँढने में सक्षम था।

संपादित करें: कक्षापथ

getResource है- मैटबब कहते हैं- क्लासपाथ से संसाधन लोड करने के लिए (अपने .jar या कक्षा पथ निर्देशिका से)। यदि आप किसी ऐप को बंडल कर रहे हैं, तो यह पूरी तरह से अच्छा है, इसलिए आप अपने ऐप के जार के अंदर आइकन फ़ाइल शामिल कर सकते हैं और इसे इस तरह से प्राप्त कर सकते हैं।

getClass().getResource(path) लोड करता है संसाधनों से, एक फ़ाइल सिस्टम पथ से नहीं।

एक नोओबी के रूप में मैं इस तक उलझन में था जब तक मुझे एहसास नहीं हुआ कि तथाकथित "पथ" मायक्लास के सापेक्ष पथ है। फ़ाइल सिस्टम में वर्ग फ़ाइल और MyClass नहीं। जावा फाइल मेरी IDE संसाधनों की तरह (जैसे xx.jpg, xx.xml) MyClass.class को एक स्थानीय स्थानीय निर्देशिका में कॉपी करती है I उदाहरण के लिए, "target / classes / pkg" नामक एक pkg निर्देशिका के अंदर क्लास-फ़ाइल स्थान अलग-अलग IDE के लिए भिन्न हो सकता है और इस पर निर्भर करता है कि आपके एप्लिकेशन के लिए बिल्ड कैसे संरचित है। आपको सबसे पहले फ़ाइल सिस्टम का पता लगाना चाहिए और उसका स्थान ढूंढना चाहिए MyClass.class फ़ाइल और संबंधित संसाधन का प्रतिलिपि स्थान जिसे आप निकालने की मांग कर रहे हैं। फिर MyClass.class फ़ाइल के सापेक्ष पथ निर्धारित करें और इसे "डॉट्स" और "स्लैश" के साथ स्ट्रिंग मान के रूप में लिखें।

उदाहरण के लिए, यहां मैं कैसे अपने javafx आवेदन के लिए एक app1.fxml फ़ाइल उपलब्ध कराता हूं जहां प्रासंगिक "MyClass.class" परस्पर "मेन। क्लास" है मेन.जाव फाइल है जहां संसाधन-कॉलिंग कोड की यह पंक्ति समाहित है। मेरे विशिष्ट मामले में संसाधन एक ही स्तर पर एक स्थान पर नकल किए गए पैकेज फ़ोल्डर के रूप में कॉपी किए जाते हैं। वह है: /target/classes/pkg/Main.class और /target/classes/app1.fxml तो संक्षेप … सापेक्ष संदर्भ "../app1.fxml" "मेन। क्लास से शुरू होता है, एक डायरेक्टरी स्तर ऊपर जाना, अब आप संसाधन देख सकते हैं"।

 FXMLLoader loader = new FXMLLoader(); loader.setLocation(getClass().getResource("../app1.fxml")); 

ध्यान दें कि इस रिश्तेदार-पथ स्ट्रिंग में "../app1.fxml", पहले दो बिंदुओं को मेन। क्लास को संलग्न करने और एकल "।" का पालन करने के लिए एक फ़ाइल एक्सटेंशन इंगित करता है इन विवरणों को दूसरी प्रकृति बनने के बाद, आप भूल जाएंगे कि यह भ्रमित क्यों था।