2016-03-08 13 views
7

मुझे पता है कि इस संबंध में कई अन्य सवाल कर रहे हैं हूँ ...getResource() Gradle परियोजना के साथ अशक्त लौटने

लेकिन मेरी समस्याएं थोड़ी अलग लगती हैं क्योंकि मुझे लगता है कि इस समस्या को न रखने के लिए सभी आवश्यक चीजें हैं।

कोड:

this.getClass().getResource("checkstyle_whitespace.xml"); // null 

मुद्दा यह है कि मैं डीबगर में वर्ग लोडर निरीक्षण के आधार पर अपने classpath सत्यापित करने के बाद है। यहाँ मैं क्या देख रहा हूँ है:

27 = {[email protected]} "file:/Users/dennis/Documents/Development/java/java-grader/build/classes/main/" 
28 = {[email protected]} "file:/Users/dennis/Documents/Development/java/java-grader/build/resources/main/" 

ब्लो मेरी निर्देशिका संरचना की एक त्वरित tree है। build/resources और src/main/resources देखें। जब धीरे-धीरे मेरी परियोजना बनाता है तो फ़ाइलों की प्रतिलिपि बनाई जा रही है।

├── build 
│   ├── classes 
│   │   ├── main 
│   │   │   └── javaGrader 
│   │   └── test 
│   │    └── javaGraderTest 
│   └── resources 
│    └── main 
│     ├── checkstyle_whitespace.xml 
│     └── grammars 
├── src 
│   ├── main 
│   │   ├── java 
│   │   │   └── javaGrader 
│   │   └── resources 
│   │    ├── checkstyle_whitespace.xml 
│   │    └── grammars 
│   └── test 
│    ├── java 
│    │   └── javaGraderTest 
│    └── resources 
│     └── mini_test 
├── target 
│   ├── classes 
│   ├── generated-sources 
│   │   └── annotations 
│   └── generated-test-sources 
│    └── test-annotations 
└── test_assets 

मैं क्या समझ से, फ़ाइलों को सुलभ है क्योंकि वे build में हो जाना चाहिए। अगर मैं गलत हूं तो मुझे सही करें ...

उत्तर

8

यदि आप एक संसाधन पथ पास करते हैं जो / से Class.getResource() से शुरू नहीं होता है, तो क्लास लोडर कक्षा के पैकेज में संसाधन की तलाश करता है। जड़ पर नहीं। आपका कोड

this.getClass().getResource("/checkstyle_whitespace.xml") 

या

होना चाहिए
this.getClass().getClassLoader().getResource("checkstyle_whitespace.xml") 
+1

एक बंदूक के बेटे जोड़कर 'getClassLoader()' काम करता है – djthoms

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