2014-07-24 13 views
10

Ich habe ein gradle-basierte Java-Projekt mit dieser StrukturZugriff gradle Ressourcen von Java

. 
├── myproject 
│  ├── src 
│  | └── main 
│  |   ├── java 
│  |   └── resources 
│  |    └── myresource.xml 
|  ├── build 
|  |  ├── classes 
|  |  | └── main 
│  |  |   └── myresource.xml 
|  |  ├── resources 

Ich versuche, einige Dateien in den Ressourcen Ordner mit einem Classloader zugreifen zu können, wie diese

ClassLoader.getSystemClassLoader().getResoure("/myresource.xml"); 

aber es findet die Datei nicht.

Der einzige Weg, die ich gefunden habe ist, diese Dateien zugreifen, indem die bekannte Struktur des Projekts zu erkunden

Path resourcesPath= FileSystems.getDefault().getPath(System.getProperty("user.dir"), "/src/main/resources/"); 

Jede Idee, was mache ich falsch?

+0

Wann versuchen Sie dies? d.h. wann wird dieser Code ausgeführt? – Matt

Antwort

11

Nun, es scheint, dass meine Schwierigkeiten von einem anderen Problem herrührten (Ressourcen wurden nicht an die richtigen Stellen kopiert). Nachdem ich dieses Problem gelöst hatte, konnte der ClassLoader meine Ressourcen mit einer der beiden folgenden Formen finden:

2

http://docs.oracle.com/javase/7/docs/api/java/lang/Class.html#getResource(java.lang.String)

Zum Beispiel so etwas wie MyMain.class.getResource("/config.txt") oder relativen Pfad verwenden, wenn angemessen.

+0

Ich habe die ursprüngliche Frage zur Klarstellung und zum besseren Verständnis geändert – magomar

+0

Die Klassen sind am selben Ort gespeichert, wie Ressourcen tun. –

+0

Sie sind richtig @DmitryGinzburg, meine Schwierigkeiten wurden aufgrund der Ressourcen nicht in den Ordner Klassen kopiert, es war ein Problem im Zusammenhang mit der Verwendung oder Konfiguration von Gradle in meiner IDE, ich denke (ich bin neu zu groß) – magomar

Verwandte Themen