Witam wszystkich, mam problem z ścieżkami po wyeksportowaniu aplikacji jako jar, w InteliJ idea wszystko działa bez problemu, ale gdy próbuje uruchomić jako jar, to ścieżki się gubią.
Wywołujesz prawdopodobnie z innego miejsca w strukturze katalogów niż Intellij, dlatego bezwzględna ścieżka nie działa. Czy gdzieś dostarczasz po drodze informacji gdzie w strukturze katalogów ma zaczepić początek tej ścieżki?
A może to ten problem: https://stackoverflow.com/questions/45574665/resource-folder-not-included-when-building-jar-in-intellij ?
Jeśli masz te pliki w projekcie w src/main/resources
i używasz jakiegoś ogarniętego build toola to powinny one trafić do wynikowego jara. Wtedy powinieneś dobierać się do nich z poziomu classpath a nie file systemu. Tu masz przykłady kopiowania: https://stackoverflow.com/questions/10308221/how-to-copy-file-inside-jar-to-outside-the-jar/44077426
W Twoim przypadku to powinno zadziałać:
FileUtils.copyURLToFile(getClass().getResource("/login.json"), targetFile);
jw, musisz wrzucic to do resources a potem odnosić się przez ścieżkę względem czegoś.
pliki są w resources, i tak, znajdują się w z budowanym pliku jar, ale chcę żeby tworzyły się w katalogu użytkownika.
Okej, dzięki działa, literówka mnie pokonała na początku. a mam jeszcze jedno pytanie, żeby nie tworzyć nowego tematu. Bo teraz muszę mieć plik startowy np .bat, gdzie muszę mieć podaną ścieżkę do biblioteki "javafx" tj.
java --module-path D:\API's\javafx-sdk-15.0.1\lib --add-modules javafx.controls,javafx.fxml -jar InstalingBot_V3.jar
. Jest jakiś sposób żeby to ominąć ?
Jedynie jeśli JRE użytkownika który uruchamia Twojego JARa ma w sobie JavaFX. Najnowsze JRE tego nie mają, więc masz opcję albo stworzenia własnego image JRE z użyciem narzędzia jlink
i udostępniania go razem z JARem albo zbudowanie fat JARa który będzie miał wszystkie potrzebne biblioteki w sobie (tutaj już potrzebny Maven albo Gradle). Sam z JavąFX nie pracowałem wiele lat ale tutaj chyba opisują co i jak: https://openjfx.io/openjfx-docs/#modular