Próbuję odczytać plik spakowany wewnątrz pliku JAR wraz z klasą, która go czyta. Aby to zrobić, używam następujące:Czytanie plików z poziomu JAR nie działa w systemie Windows
getClass().getClassLoader().getResourceAsStream(file)
Działa to dobrze, gdy tworzę i uruchomić plik JAR na OSX, ale jeśli utworzyć i uruchomić plik JAR na oknach, powyższa linia zwraca null.
Czy tu czegoś brakuje? Jeśli utworzę JAR na OSX i uruchomię go w systemie Windows, działa dobrze. Problem występuje tylko wtedy, gdy utworzę plik JAR w systemie Windows.
EDYCJA: Warto wspomnieć, że nie ma hierarchii folderów w pliku JAR. Wszystko jest przechowywane na jednym poziomie, więc klasa czyta plik, a sam plik znajduje się w tym samym katalogu. Dodatkowo, jest to jak tworzę plik JAR, zarówno na OSX i Windows:
jar -cmf manifest.mf run.jar *.class file1 file2
EDIT 2: Plik Próbuję załadować plik jest .properties Java. Rozumiem, że to nie jest przyczyną problemu?
Pliki jar są plikami zip, więc można ich użyć do zweryfikowania wersji utworzonej przez system Windows. Zmień nazwę pliku na .zip, a następnie przejdź do środka za pomocą Eksploratora Windows. –
@NathanielWaisbrot weryfikuje co dokładnie? Że wszystkie pliki są tam? Sprawdziłem to (używając słoika -tf zamiast tego) i zdecydowanie tam są, w strukturze opisanej w pytaniu – Kumalh
Mówisz, że słoik zbudowany na Macu działa w systemie Windows, ale słoik zbudowany na Windowsie nie działa. Diff zawartość dwóch plików jar. Jeśli używasz tej samej wersji Java, myślę, że pliki .class powinny być identyczne. –