2011-10-27 33 views
22

से एक परीक्षण संसाधन लोड करने के लिए ग्रोवी का उपयोग करें, मैं अपने प्रोजेक्ट वर्कस्पेस में/डेटाटेस्ट फ़ोल्डर के अंदर स्थित एक संसाधन लोड करना चाहता हूं। तो, पूरी फाइल /datatest/a.xml होगी .. मैं इस संसाधन का पूर्ण पथ कैसे प्राप्त करूं जो मुझे यूनिट परीक्षणों में चाहिए, क्योंकि इकाई परीक्षण किसी भी मशीन पर चलाया जा सकता है जिसे मैं हार्डकोड नहीं करना चाहता लेकिन क्लासलोडर का उपयोग करने के बजाय इसे प्राप्त करें? मैं यह कैसे करुं ?मेरी परियोजना संरचना

+0

classpath पर अपनी परियोजना कार्यक्षेत्र है? आमतौर पर नहीं। यदि ऐसा है, तो क्लासलोडर इसे –

+0

नहीं देख सकता है हां प्रोजेक्ट वर्कस्पेस क्लासपाथ – Phoenix

+0

पर शामिल है, आप यह भी देख सकते हैं [यह उत्तर] (http://stackoverflow.com/questions/14162100/convert-a-classpath- filename-to-a-real-filename/14162103 # 14162103) – GreenGiant

उत्तर

38

यदि यह अपने classpath में है, तो यह काम करना चाहिए:

String xmlString = this.getClass().getResource('/datatest/a.xml').text 
+0

यह वास्तव में एक ".lst" फ़ाइल है ... उदाहरण के लिए "a.lst" ... मैंने इसे intelliJ में कंपाइलर संसाधन सेटिंग्स में जोड़ा लेकिन अभी भी नहीं भाग्य – Phoenix

+1

उस स्थिति में, यह क्लासपाथ –

+0

पर नहीं है, मैंने स्पष्ट रूप से एक CLASS_PATH परिभाषित नहीं किया था, लेकिन पता चला कि वर्तमान डीआईआर को इस ग्रोवी एक-लाइनर को चलाकर मेरे प्रभावी/डिफ़ॉल्ट CLASS_PATH में शामिल किया गया था: 'this.class .classLoader.rootLoader.URLs.each {println it} '- तब यह स्पष्ट हो गया कि मुझे फ़ाइलों को सहेजना चाहिए ताकि मैं उन्हें बाद में खोलने के लिए 'संसाधन प्राप्त कर सकूं'। – MarkHu

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