Uruchamanie plików *.jar z konsoli - problem

0

Witam,
Jestem początkującym programistą java. Mam problem z uruchaminiem plików .jar z windowsowej konsoli, podczas pierwszego uruchamiania programu tworze pliki loga i konfiguracyjny programu.
Problem polega na tym że gdy uruchamiam konsole przechodzę do odpowiedniej lokalizacji za pomocą komendy "cd C:\Users\Adrian-User\Documents\NetBeansProjects\JesData\JesData\dist" a potem uruchamiam plik komendą "java -jar jakisPlik.jar" wszystko działa poprawnie, natomiast gdy wygeneruję komendę w konsoli "java -jar C:\Users\Adrian-User\Documents\NetBeansProjects\JesData\JesData\dist\jakisPlik.jar" to
* pliki konfiguracyjne nie są tworzone w tej samej lokalizacji** co plik jakisPlik.jar, lecz całkiem gdzie indziej i nawet nie mam pojęcia gdzie...
jako ścieżkę do tworzenia plików mam :
private static final String CONFIG_FILE_DIRECTIONARY = "config.ini";
oraz
private static final String LOG_FILE_DIRECTIONARY = "LogFile.txt";

Czy zna ktoś rozwiązanie tego problemu oprócz deklarowania na sztywno ścieżki do plików aby tworzyły się zawsze w miejscu pliku *.jar?

Pozdrawiam i z góry dziękuję za pomoc.

0

Poprawną odpowiedzią jest właśnie przejście do katalogu, w którym masz aplikację i odpalenie go stamtąd. Nazywa się to working directory i jest standardowym mechanizmem systemów operacyjnych.

Ponieważ w Javie ogólnie nie ma czegoś takiego, jak "JAR, z którego wystartowałeś aplikację", nie można też łatwo pobrać ścieżki do Twojego archiwum podanego jako java -jar mojplik.jar (jest to wykonalne, ale w pewnych scenariuszach będzie generować głupoty). Dlatego robi się to w ten sposób, że do startowania aplikacji używa się skryptu: BAT dla Windowsa i jakiegoś shella dla systemów uniksowych, które sprawdzają swoją własną lokalizację i ustawiają odpowiedni katalog roboczy poleceniem cd przed uruchomieniem maszyny wirtualnej.

0

Dzięki zyxist za odpowiedź.
To mi rozjaśniło temat, bo mało kto o tym wspomina.

0

zyxist:

nie można też łatwo pobrać ścieżki do Twojego archiwum podanego jako java -jar mojplik.jar (jest to wykonalne, ale w pewnych scenariuszach będzie generować głupoty).

Wydawało mi się, że uznaje się to za prostą czynność:

return new File(MyClass.class.getProtectionDomain().getCodeSource().getLocation().toURI()).getPath();

Jakie tu widzisz zagrożenia, @zyxist?

Jeżeli ktoś pisze aplikację desktopową, to chyba mu to zawsze zadziała.

1 użytkowników online, w tym zalogowanych: 0, gości: 1