Uruchamanie plików *.jar z konsoli - problem

Uruchamanie plików *.jar z konsoli - problem
D1
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:2
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.

zyxist
  • Rejestracja:ponad 7 lat
  • Ostatnio:ponad 6 lat
  • Postów:101
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.


D1
  • Rejestracja:ponad 9 lat
  • Ostatnio:ponad 6 lat
  • Postów:2
0

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

jarekczek
  • Rejestracja:prawie 8 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Siemianowice Śląskie
  • Postów:500
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.


Przeważnie ignoruję niezarejestrowanych użytkowników.
edytowany 1x, ostatnio: Patryk27
Patryk27
Poprawiłem link do StackOverflow;
jarekczek
Dzięki, a co było źle?
Patryk27
Było http://https://stackoverflow.com/... ;-)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.