Metoda getResourceAsStream zwraca wartość null za każdym razem, gdy uruchamia się plik wykonywalny w katalogu, który kończy się wykrzyknikiem.Nie można otworzyć zasobów w katalogach kończących się wykrzyknikiem (!)
Na poniższym przykładzie Mam projektu Eclipse następującą strukturę katalogów:
src\ (Source Folder)
main\ (Package)
Main.java
res\ (Source Folder)
images\
Logo.png
Czytam logo.png następująco:
public static void main(String[] args) throws IOException {
try (InputStream is = Main.class.getClassLoader().getResourceAsStream("images/Logo.png")) {
Image image = ImageIO.read(is);
System.out.println(image);
}
}
Patrz załącznik 2 do testu przypadki. Po pierwsze, plik wykonywalny jest uruchamiany z katalogu "D: \ test123! @ #" Bez żadnych problemów. Po drugie, plik wykonywalny jest uruchamiany z katalogu "D: \ test123! @ # !!!", z problemami.
Czy katalogi kończące się wykrzyknikiem nie są obsługiwane? Czy kod jest niewłaściwy?
Z góry dziękuję.
Czy istnieje powód, aby tworzyć/używać katalogów o normalnych nazwach? – mtk
Czy jesteś pewien, że umieścisz równe pliki jar w obu katalogach? – Andremoniy
Użytkownicy mogą wykonywać moją aplikację z dowolnego miejsca w systemie plików. Katalogi z wykrzyknikami są obsługiwane przez system Windows. – Velth