2012-04-20 11 views
6

Mam następującą strukturę kodu:Ładowanie pliki JAR w Scala

Projects/ 
    classes/ 
     performance/AcPerformance.class 
     resources/ 
        Aircraft/ 
          allAircraft.txt 

Mam zawartość folderu klas w słoiku i mój AcPerformance kod scala próbuje odczytać zawartość tekstu folderów Aircraft akta. Mój kod:

val AircraftPerf = getClass.getResource("resources/Aircraft").getFile 
val dataDir = new File(AircraftPerf) 
val acFile = new File(dataDir, "allAircraft.txt") 

for (line <- linesFromResource(acFile)) { 
    // read in lines 
} 

Kiedy próbuję uruchomić kod pojawia się następujący błąd:

spowodowane: java.io.FileNotFoundException: C: \ Projects \ file: \ C: \ Projects \ bibliotek \ aircraft.jar! \ Aircraft \ allAircraft.txt (Nazwa pliku, nazwa katalogu lub składnia etykiety woluminu jest nieprawidłowa)

Czy to jest właściwy sposób, aby przeczytać zawartość pliku JAR? Dzięki!

Odpowiedz

8

Nie, URL 's nie ma zamiaru robić tego, co chcesz tutaj - ścieżka, którą ci daje, nie jest ścieżką systemu plików, której możesz użyć w konstruktorze File. Byłbyś najlepiej wyłączyć za pomocą getResourceAsStream i pełną ścieżkę do zasobu:

val in = getClass.getResourceAsStream("/resources/Aircraft/allAircraft.txt") 

Należy pamiętać, że trzeba także poprzedzić ścieżkę z / aby to absolutna w aktualnej wersji, którą szukasz resources katalog pod numerem performance.

Powiązane problemy