2010-12-28 15 views
19

Potrzebuję spakować plik konfiguracyjny w słoiku. plik konfiguracyjny znajduje się w katalogu głównym pliku JAR. Jednak mam następujący błąd:załaduj plik w słoju

Caused by: java.lang.IllegalArgumentException: URI is not hierarchical at java.io.File.(Unknown Source)

File url = new File(MyClass.class.getClassLoader().getResource("my.conf").toURI()); 

Odpowiedz

28

Zamiast tego należy użyć metody getResourceAsStream(). Jeśli plik jest osadzony w pliku JAR, najprawdopodobniej jest to URI: // URI

InputStream is = this.getClass().getResourceAsStream("my.conf"); 
4

Plik powinien być w tym samym opakowaniu co MojaKlasa. Właśnie zdałem sobie sprawę, że tworzysz obiekt File. Zamiast tego spróbuj użyć getResourceAsStream(). To jest właściwa droga, jeśli chcesz odczytać zawartość z zasobu klasy clas. Tutaj is the example.

+0

korekcji: the plik został znaleziony, ale ponieważ znajduje się wewnątrz słoika, mam uri nie jest błędem hierarchicznym – user217631

+0

po ślad stosu –

+0

Następujący błąd powinien być wyświetlany "wyjątek w wątku" główny "java.lang.IllegalArgumentException: URI nie jest hierarchiczny" – hiropon

7

Dlaczego potrzebujesz pliku? Jeśli trzeba czytać użyć config

Class.getResourceAsStream("/" + "my.conf"); 

Będzie tylko trzeba mieć plik w jednym katalogu z katalogu głównego pakietu (taki sam jak w głównym słoika)

+1

dlaczego łączysz tam ciąg? – pstanton

+2

naprawdę to nie ma znaczenia, chciałem napisać "/" + fileName, ale zmieniono zmienną na prawdziwe imię. –