2016-07-21 5 views
0

Ich habe mein Latein am Ende erreicht, um herauszufinden, warum ich nicht eine Datei von meinen Ressource Ordner in einem Gradle Projekt laden kann.getResourcesAsStream kann nicht Datei aus jUnit lädt

Mein Projekt hat folgende Ordnerstruktur:

/src 
    /main 
     /java 
      /datasets 
       /IrisDataReader.java 
     /resources 
      /datasets 
       /Iris.csv 
    /test 
     /java 
     /resources 
      /datasets 
       /Iris.csv 

In meinem Test/java, ich habe einige Tests laufen, die IrisDataReader verwenden Iris.csv in ein Programm zu lesen.

Nachfolgend erzeugt eine Null-Zeiger Ausnahme.

InputStream inputStream = IrisDataReader.class.getResourceAsStream("/datasets/Iris.csv"); 

Wenn gebaut, erstellt Gradle die folgende Struktur Datei

/build 
    /classes 
     /main 
      /datasets 
       /IrisDataReader.class 
    /resources 
     /main 
      /datasets 
       /Iris.csv 

Hier ist der seltsame Teil: Wenn ich kopieren bauen/resources/main/Datensätze/Iris.csv in/build/classes/main/Datasets /, der Klassenlader kann die Datei erfolgreich laden. Irgendwelche Ideen?

Ich habe keine der gradle Standardkonfigurationen oder hinzugefügt alle Build-Tasks geändert.

+1

Wie laufen Sie Ihren Code? Was ist der Klassenpfad? – Andreas

+0

Ich führe die JUnit mit IntelliJs GUI. Es ist so konfiguriert, dass es den Klassenpfad des Moduls verwendet (es gibt mehrere Module im Projekt; der Quellbaum oben ist eines der Module) – brainmurphy1

Antwort

0

Ohne genau zu wissen, wie die .iml-Dateien von IntelliJ funktionieren, bemerkte ich, dass meine [Modul] .iml-Datei ein anderes Modul hatte, das als external.root.project.path deklariert wurde.

Als ich es gefunden, es sah aus wie:

external.root.project.path="$MODULE_DIR$/../anothermodule" 

... So habe ich es so aus:

external.root.project.path="$MODULE_DIR$" 

Als ich das Projekt gereinigt und wieder aufgebaut, IntelliJ es automatisch bearbeitet, so dass es so aussah:

external.root.project.path="$MODULE_DIR$/.." 

... Und das schien den Job zu erledigen. Frag mich nicht.

Verwandte Themen