2016-03-08 10 views
7

Sono consapevole del fatto ci sono diverse altre domande riguardo a questa ...getResource() sta tornando nulla con il progetto Gradle

Ma i miei problemi sembrano essere un po 'diversi perché mi sembra di avere tutte le cose necessarie per NON avere questo problema.

Il codice:

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

Il problema è che ho verificato il mio percorso di classe controllando il caricatore di classe nel debugger. Ecco quello che sto vedendo:

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/" 

Colpo un breve tree della mia struttura di directory. Vedi build/resources e src/main/resources. I file vengono copiati quando gradle crea il mio progetto.

├── 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 

Da quello che ho capito, i file dovrebbero essere accessibili perché sono in build. Correggetemi se ho torto ...

risposta

8

Se si passa un percorso di risorsa che non inizia con un / a Class.getResource(), il programma di caricamento classe cerca la risorsa nel pacchetto della classe. Non alla radice. Il codice dovrebbe essere

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

o

this.getClass().getClassLoader().getResource("checkstyle_whitespace.xml") 
+1

Figlio di una pistola, appendendo 'getClassLoader()' opere – djthoms

Problemi correlati